0

私はいくつかの関数定義によって拡張されることを意図したプログラムを書いています。プログラムをコンパイルする方法の1つは、コードをメインコードにリンクする単一の実行可能ファイルを作成することです。問題は、定義する関数の1つがオプションであり、それをテストする必要があるということです。

Linuxでは、これが私がしていることです:

「-rdynamic」オプションをg++に、または「--export-dynamic」オプションをldに設定してプログラムをコンパイルします。次に、次のように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");

ただし、MinGW32ではg++に「-rdynamic」または「--export-dynamic」オプションはありません。したがって、これは機能しません。MinGW32を使用してWindowsで何をすべきか知っている人はいますか?

4

1 に答える 1

1

わかりました、最後に、私は自分の質問に答えます...

フラグとリンクする必要が-Wl,--export-all-symbolsあり、機能します...

于 2009-02-05T18:06:52.240 に答える