私は自分のプログラムをDLLにバインドしようとしています。
私は、そのメソッドをインポートする方法を知っているが、1つのヘッダファイルには、私はこのような定義を持っている:"extern"で定義された変数を持つライブラリへのレイトバインド
EXTERN_C const IID SomeVariable;
は、どのように私は、「未解決の外部シンボル」エラーを取得せずに私のプログラムでは、この変数を参照することができますか?
私は自分のプログラムをDLLにバインドしようとしています。
私は、そのメソッドをインポートする方法を知っているが、1つのヘッダファイルには、私はこのような定義を持っている:"extern"で定義された変数を持つライブラリへのレイトバインド
EXTERN_C const IID SomeVariable;
は、どのように私は、「未解決の外部シンボル」エラーを取得せずに私のプログラムでは、この変数を参照することができますか?
GetProcAddressを使用すると、関数または変数のアドレスを取得できます。
MSDNのGetProcAddr()を参照してください。
const IID *idp = reinterpret_cast<const IID *>(GetProcAddr(hLibrary, "SomeVariable"));
今、あなたは、ポインタを経由してSomeVariable
を参照することができます - あなたは自分のポインタを介し関数を参照することができます同じように。もちろん、実際に使用する前にポインタがヌルでないことを確認する必要があります。
あなたは機能のためにやっているレイトバインディングについて詳しく説明できますか? –
私は関数のシグネチャを知っているので、それに一致する関数ポインタを定義します。次に、DLLハンドルと関数の名前で "GetProcAddress"を呼び出します。結果を関数ポインタのインスタンスに代入し、それを他の関数として使用することができます。 – Idov
この変数がエクスポートされていないというオッズは非常に高いです。 DLLのdumpbin.exe/exportsを使用して、再確認してください。 –