- PR -

C++によるDLL呼び出し

1
投稿者投稿内容
あい
会議室デビュー日: 2005/09/06
投稿数: 2
投稿日時: 2005-09-06 12:16
お世話になります。
昨日の午後より手詰まりをおこしています。
もしよろしければ、アドバイスなどをお願いします。
やりたいことは、C#により作成されたDLLを客先より配布されたのですが、VC++でそれを呼び出すことができずに困っております。

下記のGetProcAddressがNULLで返却されてしまいます。
Regasm.exeで登録なども試していたのですが・・・

[C#(DLL)の情報]
アセンブリ名:ComCert.dll
ネームスペース:ComCert30
クラス名:ClientCert30
呼出メソッド:GetClientInfo(パラメータはstringでクライアント情報)

[C++側(コーディング途中)]
typedef int (CALLBACK* lpfGetClient)(DWORD);
HINSTANCE hLib = LoadLibrary("ComCert.dll");
if (hLib == NULL)
{
printf("DLLの読み込みを失敗しました。\nDLLをEXEファイルと同じディレクトリへ複写してください\n");
}
else
{
// 関数へのポインタ宣言
lpfGetClient lpGetClientPoint;
lpGetClientPoint = (lpfGetClient)GetProcAddress(hLib,"GetClientInfo");
if (lpGetClientPoint == NULL) {
printf("メソッドの読み込みを失敗しました。");
}
else
{
// 関数の呼び出し
DWORD objParam = (DWORD)"0001";
int intRet = lpGetClientPoint(objParam);
}
}

// メモリ開放
FreeLibrary(hLib);
甕星
ぬし
会議室デビュー日: 2003/03/07
投稿数: 1185
お住まい・勤務地: 湖の見える丘の上
投稿日時: 2005-09-06 12:41
マネージドコードとして作成されたDLLを呼び出すには、COM相互運用機能を用いるか、同じくマネージドコードで作成されたアプリケーションから呼び出す以外に方法はないと思いますよ。GetProcAddressのようなアンマネージコードを前提とした方法では、呼び出せないでしょう。

ここは素直に参照に追加して、マネージドC++で記述するのがよろしいかと。
あい
会議室デビュー日: 2005/09/06
投稿数: 2
投稿日時: 2005-09-06 13:25
マネージドC++の手法をしらべて、挑戦しています。
情報、ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)