1
「純粋な」C .cファイルであるプロジェクトのいくつかのcppファイルから作成された静的ライブラリをリンクするのに問題があります。Visual Studio C++スタティックライブラリのエクスポート名を強制する
logforwarder.obj : error LNK2001: unresolved external symbol _getEventLogProviders
しかし、このようなの.libファイルのエクスポート、それを::ファイルMの ダンプ:... \リリース\のrecvevent.lib
.Cファイルは次のように、構文_FUNCTIONAMEと関数オブジェクトを探していますFile Type: LIBRARY
Exports
ordinal name
[email protected]@[email protected] (unsigned int __cdecl _getE
ventLogProviders(char * *))
Summary
C3 .debug$S
14 .idata$2
14 .idata$3
4 .idata$4
4 .idata$5
C .idata$6
マイexports.defファイルは次のようになります、
EXPORTS
getEventLogProviders=getEventLogProviders @4
プロジェクトが正常にリンクすることができ、ライブラリ、このような関数をエクスポート:
Dump of file M:\...\screenshot.lib
File Type: LIBRARY
Exports
ordinal name
[email protected]
私は間違っていますか?
ほとんどのところ、dumpbinは私に "getEventLogProviders"を関数名として与え、リンクしても "_getEventLogProviders"を検索します。 – Konrads
動作した行: "_getEventLogProviders = _getEventLogProviders @ 4" – Konrads
これは別のバグです。エクスポートを使用するプログラムが正しい呼び出し規約を使用していません。 __stdcallの代わりに__cdeclを使用します。実行時にスタックの不均衡を招き、診断が非常に困難になります。 –