1

したがって、ソリューションには2つのファイルがあります。

テスト.asm

.code
test proc
mov eax, 1
ret
test endp
end

ソース.cpp

#include <iostream>
#include <conio.h>

extern "C" int test();

int main()
{
std::cout << "eax = " << test() << std::endl;
_getch();
return 0;
}

構成マネージャーでソリューション プラットフォームを x64 に設定し、ビルドのカスタマイズで masm をチェックしました。関連する 2 つの投稿を見つけましたが、提案された内容は役に立ちませんでした。私はYouTubeでビデオをフォローしていて、作者とまったく同じようにしましたが、次のエラーが発生しました:

1>Source.obj : error LNK2019: unresolved external symbol _test referenced in function main
1>C:\Users\omar\Desktop\ASM\x64\Debug\ASM.exe : fatal error LNK1120: 1 unresolved externals

誰かが問題が何であるかを理解するのを手伝ってくれますか? 私は本当にx64アセンブリに入りたいです。ありがとう

4

3 に答える 3

2

アセンブラの関数名は_test、だけでなく、である必要がありますtest。リンカーのエラー メッセージで確認できます。

error LNK2019: unresolved external symbol _test
                                          /\
                                          ||
right here ---------------------------------

詳細については、Microsoft Windows での C 名の装飾を参照してください。

于 2012-10-11T20:54:13.057 に答える
0

Assuming you're on Visual studio, you need to add the name of the assembly file to the additional dependancies

  1. Right click on the project
  2. Go to properties
  3. Click on Linker
  4. Click on Input
  5. In the additional Dependancies, add test

Assuming the assembly code works fine and it is in the same directory as the c++ source file it should work

于 2012-10-11T21:13:29.800 に答える
0

修理済み。これをフォローしました

また、アンダースコアを使用する必要がありました

于 2012-10-12T04:22:22.687 に答える