ここから本文です

VC++でdllを作りました LoadLibraryで動的に使用することには成功したようですが ...

tts********さん

2013/6/3000:51:20

VC++でdllを作りました
LoadLibraryで動的に使用することには成功したようですが
GetProcAddressで失敗したようです
初めてのことが多いので何が間違っているかわかりません
コンパイルは通ったのですが

#include<iostream>
#include<Windows.h>
#include<conio.h>
using namespace std;

int main()
{
HMODULE dp;
dp = LoadLibrary("MakeDll1.dll");
if(dp == NULL)
{
cout << "error1" << endl;
getch();
return 0;
}
else cout << "ok1" << endl;

int (*jdg1)(int a,int b);
jdg1 = (int (*)(int,int))GetProcAddress(dp,"jdg1");
if(jdg1 == NULL)
{
cout << "error2" << endl;
getch();
return 0;
}

double (*jdg2)(double a,double b);
jdg2 = (double (*)(double,double))GetProcAddress(dp,"jdg2");
if(jdg2 == NULL)
{
cout << "error3" << endl;
getch();
return 0;
}

cout << jdg1(3,5) << endl;
cout << jdg2(5.646,7.454) << endl;

FreeLibrary(dp);

getch();
return 0;
}

dllにはこう書きました
#include<Windows.h>

int __stdcall DllMain(HINSTANCE hin,DWORD num,LPVOID voi)
{
return 1;
}

int jdg1(int a,int b)
{
return ((a > b)?a:b);
}

double jdg2(int a,int b)
{
return ((a > b)?a:b);
}

.defはこうです
LIBRARY MakeDll1
EXPORT
jdg1
jdg2

ファイル名は
問題のファイルがUseDll1.cpp
DLLのファイルがMakeDll1.cppとMakeDll1.defです
DLLに問題はないと思っているのですが・・・
どうかよろしくお願いします

閲覧数:
468
回答数:
1

違反報告

ベストアンサーに選ばれた回答

xia********さん

2013/6/3001:23:36

原因かどうかわかりませんが、引数の型が合ってないのは
なぜでしょうか?
デバッガー等を使ってどこでおかしくなるのか、おかしくなる
直前の状態がどうなってるか確認するといいでしょう。

質問した人からのコメント

2013/6/30 02:00:06

わかりました
関数の型と.defのEXPORTSが
EXPORTだったのが原因だと思います
ありがとうございました

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる