2

アセンブリ ( でコンパイル) を/でyasmコンパイルされたオブジェクトと結合しようとしています。これは、最終的な実行可能ファイルにリンクされている に ( で)リンクしようとしています。msvccl.exelink.exe.dll

ソースからオブジェクト ファイルを作成することも、これらのオブジェクトから dll を作成することも、まったく問題なく動作します。

最後のステップで、 を.dll実行可能ファイルにリンクすると、次のエラーが発生します。

 error LNK2019: unresolved external symbol xxx_xxxx

私はCを使用しています.Win64には名前マングリングがありませんが、複数のスキーム(_xxx_xxxxまたはなど__imp_xxx_xxxx)を試しました。

オブジェクト ファイルを調べると、dumpbin.exeすべてのシンボルが明らかになります。

$ 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

しかし、からエクスポートされたシンボルにはありません.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を使用して、宣言を 内でエクスポートされたものとしてマークしましたが__declspec(dllexport)

リンカーを満足させ、シンボルが実際にそこにあることを彼に伝える方法はありますか?

4

1 に答える 1