でコンパイルされたコードをリンクします最終的な実行可能ファイルにリンクされます。未解決の参照である、私は私が<code>.dll</code>に(<code>link.exe</code>で)リンクしようとしている<code>msvc</code>/<code>cl.exe</code>によってコンパイルされたオブジェクト、と(<code>yasm</code>でコンパイルされた)アセンブリを組み合わせるためにしようとしているNASMとMSVC
ソースからオブジェクトファイルを作成し、これらのオブジェクトからdllを作成することは、どちらも問題なく動作します。実行可能で.dll
を結ぶ最後のステップで
error LNK2019: unresolved external symbol xxx_xxxx
を、私は(_xxx_xxxx
または__imp_xxx_xxxx
のような)複数のスキームを試してみました。 .dll
の内側にエクスポートして、私は宣言をマークしているにもかかわらず
$ dumpbin /exported mylib.dll
File Type: DLL
Section contains the following exports for mylib.dll
00000000 characteristics
57A0FE02 time date stamp Tue Aug 02 22:09:38 2016
0.00 version
1 ordinal base
132 number of functions
132 number of names
[...]
:.dll
からエクスポートされたシンボルで
$ dumpbin /symbols myobj.o
File Type: COFF OBJECT
COFF SYMBOL TABLE
000 00000000 DEBUG notype Filename | .file
002 00000000 SECT1 notype Static | .text
Section length 215, #relocs 0, #linenums 0, checksum 0
004 00000057 SECT1 notype External | xxx_xxxx
005 0000013E SECT1 notype External | xxx_xxxx
006 00000000 SECT1 notype External | xxx_xxxx
でもない:dumpbin.exe
を持つオブジェクトファイルを確認する
は、すべてのシンボルを明らかに__declspec(dllexport)
を使用してください。
どのようにリンカーを満たし、シンボルが本当にそこにいることを伝えるためのアイディアですか?
Microsoftのツールを使用して実行可能ファイルにDLLをリンクすることはできません。 DLLに対応するインポートライブラリを使用する必要があります。 –
@RossRidge私は生成されたインポートライブラリを使用します。 – Leandros