CでDLLをロードしてその関数を使用することは可能ですか?
私はCを初めて使用し、インターネットでこれについていくつかの優れた参考文献を検索しようとしています。しかし、私は何も見つけることができません。
どんな助けでもいただければ幸いです!
Windows 7、64ビットのCode::BlocksでGNUGCCを使用しています。
CでDLLをロードしてその関数を使用することは可能ですか?
私はCを初めて使用し、インターネットでこれについていくつかの優れた参考文献を検索しようとしています。しかし、私は何も見つけることができません。
どんな助けでもいただければ幸いです!
Windows 7、64ビットのCode::BlocksでGNUGCCを使用しています。
HMODULE hModule = LoadLibrary(<dll file name>)
続いGetProcAddress(hModule, <function name>)
て、WinAPIを使用してこのジョブを実行します。
機能を調べてみるべきだと思いますLoadLibrary
。
http://msdn.microsoft.com/en-us/library/ms684175.aspx
指定されたモジュールを呼び出し元プロセスのアドレス空間にロードします。指定されたモジュールにより、他のモジュールがロードされる可能性があります。
MinGWを使用してDLLを構築する場合、次の手順を実行します。
まず、関数をエクスポート用にマークする必要があります。これにより、DLLの呼び出し元が関数を使用できるようになります。これを行うには、次のように変更します(たとえば)
__declspec( dllexport ) int add2(int num){
return num + 2;
}
次に、関数がfuncs.cというファイルにあると仮定して、次のようにコンパイルできます。
gcc -shared -o mylib.dll funcs.c
-sharedフラグは、gccにDLLを作成するように指示します。
DLLの構築に必要なすべてのフラグなどを自動化する無料のIDEについては、MinGWで非常にうまく機能する優れたCode::Blocksをご覧ください。
また、MinGWWikiのVisualBasicで使用するMinGWDLLの作成の記事も参照してください。