foo.defファイルを使用してdlltoolを介して作成された「.aファイル」を使用してCygwinでdllをコンパイルしてみました。.defファイルでは、次のことがわかりregister_callback
ます。
EXPORTS
...
register_callback @7569
...
.aファイルは。を使用して作成されましたdlltool --def foo.def --output-lib libfoo.a
。
ただし、main.oファイルをリンクすると、g++は_register_callbackが未定義であると文句を言います。
main.o:main.cpp:(.text+0x6e): undefined reference to '_register_callback'
g++ -shared -lfoo -o plugin.dll main.o
nm libfoo.a | grep 'register_callback'
ショー:
00000000 b .bss$lazy_iregister_callback
00000000 r .rdata$lazy_iregister_callback
00000000 b __imp__register_callback
00000000 T _register_callback
00000000 b .bss$lazy_iunregister_callback
00000000 r .rdata$lazy_iunregister_callback
00000000 b __imp__unregister_callback
00000000 T _unregister_callback
-lfooの有無にかかわらず、違いはありません。
この問題を解決するための指針をいただければ幸いです。