プログラム中の関数の存在のために、実行時に、チェック
-
21-08-2019 - |
質問
私はいくつかの関数定義によって拡張されることを意図されたプログラムを書いています。プログラムをコンパイルする方法の一つは、メインコードにコードをリンクする単一の実行可能ファイルを作成することです。問題は次のとおりです。定義するための機能の一つは任意であり、私はそれをテストする必要があります。
。Linuxでは、ここで私がやっているものです。
gの「-rdynamic」オプション++またはldに「--export-ダイナミック」オプションを使用してプログラムをコンパイルします。そこで、このようldsymを使用します:
fct_type myfct = (fct_type)dlsym(RTLD_DEFAULT, "fct");
機能「FCT」は、プログラム中に存在する場合は、、これはそのアドレスを返し、そうでない場合は、NULLを返します。
さて、Windows上で、私はそうすることができるようになっています:
dll_handle = GetModuleHandle(0);
fct_type myfct = (fct_type)GetProcAddress(dll_handle, "fct");
しかし、G ++ MINGW32上への "-rdynamic" または "--export-ダイナミック" オプションはありません!だから、これは動作しません。誰もがMINGW32でWindows上で何をすべきか知っていますか?
解決
[OK]を、最終的にはので、私は自分の質問にお答えします...
あなたはフラグ-Wl,--export-all-symbols
とリンクする必要があり、それが動作します...
所属していません StackOverflow