- - PR -
C++によるDLL呼び出し
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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); |
|
投稿日時: 2005-09-06 12:41
マネージドコードとして作成されたDLLを呼び出すには、COM相互運用機能を用いるか、同じくマネージドコードで作成されたアプリケーションから呼び出す以外に方法はないと思いますよ。GetProcAddressのようなアンマネージコードを前提とした方法では、呼び出せないでしょう。
ここは素直に参照に追加して、マネージドC++で記述するのがよろしいかと。 |
|
投稿日時: 2005-09-06 13:25
マネージドC++の手法をしらべて、挑戦しています。
情報、ありがとうございます。 |
1