簡體   English   中英

錯誤LNK2019:函數main中引用的未解析的外部符號

[英]error LNK2019: unresolved external symbol referenced in function main

我試圖用C ++運行我的簡單匯編代碼。我只有兩個文件“.cpp”文件和“.asm”文件。 在編譯時會出現錯誤(見下文)。如果有人可以提供幫助,我將不勝感激...... :)

這是我的“main.cpp”文件

#include <iostream>
using namespace std;

extern "C" int GetValueFromASM(); 

int main(int argc, char *argv[]){

cout<<"value is:"<<GetValueFromASM()<<endl;
cin.get();

return 0;
}

我還有一個簡單的“asm.asm”文件

.code
   GetValueFromASM proc
   mov rax,3254
   ret
   GetValueFromASM endp
end

當嘗試構建我得到此錯誤:

1>main.obj : error LNK2019: unresolved external symbol GetValueFromASM referenced in             
function main

1>..\visual studio 2012\Projects\AllAssembly\x64\Debug\AllAssembly.exe : fatal error LNK1120: 1 unresolved externals

我試過去物業 - >鏈接 - >附加圖書館目錄並改變路徑,但它不起作用。

我也試過去LINKER-> SYSTEM-> SUBSYSTEM並選擇“Windows(/ SUBSYSTEM:WINDOWS)”或“Console(/ SUBSYSTEM:CONSOLE)”但兩個都​​沒有工作。 任何人都可以幫助!! ..非常感謝

extern“C”表示前導下划線(c風格函數命名)。 只需將您的函數添加到.asm文件中,它就會開始鏈接。

UPD:如果您的項目沒有構建,請確保您包含MASM構建自定義:轉到項目上下文菜單 - >構建自定義... - >選中masm的復選框(.targets,.props)。

然后轉到.asm文件的屬性,並選擇項類型為“Microsoft宏匯編程序”。

我把它與32位混淆了。 :(

所以這適用於64位。

section .code
global GetValueFromASM

GetValueFromASM:
    ...

我沒有對代碼進行任何更改。我只是更改了一些配置,如“Arty”所示。

方法如下:右鍵單擊您的項目 - >轉到構建自定義 - >檢查MASM - >單擊確定然后轉到.asm文件的屬性,並選擇項類型為“Microsoft宏匯編程序”。

你做完了!!感謝Arty&Devolus的幫助。

對於類似的問題可以有所幫助: http//scriptbucket.wordpress.com/2011/10/19/setting-up-visual-studio-10-for-masm32-programming/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM