[英]Calling C++ functions in MASM
我正在開發一個使用MASM調用某些C ++函數的程序。 我在一個單獨的文件中定義了對2個整數求和並顯示輸出。
目前,我無法讓'main.cpp'運行asmMain()
從'main.cpp'調用函數。
; ---------------------------------------
promptFirst PROTO C
promptSecond PROTO C
printInt PROTO C
.586
.model flat, stdcall
.stack 4096
; ---------------------------------------
.DATA
first DWORD 0
second DWORD 0
; --------------------------------
.CODE
asmMain PROC C
mov first, promptFirst
ret
asmMain ENDP
PUBLIC asmMain
END
#include <iostream>
using namespace std;
void asmMain();
int promptFirst();
int promptSecond();
void printInt(int myint);
int main() {
asmMain();
}
int promptFirst() {
cout << " The first number = ";
int newint;
cin >> newint;
return newint;
}
int promptSecond() {
cout << "\nThe second number = ";
int newint;
cin >> newint;
return newint;
}
void printInt(int myint) {
cout << myint;
}
我得到的當前代碼錯誤是這樣的:
開始構建:項目:Project_Name,配置:調試Win32
main.cpp
code.obj:錯誤LNK2019:函數_asmMain中引用的未解析的外部符號_promptFirst
關於如何解決此問題的任何提示?
問題在於C ++編譯器會破壞符號 ,這是extern "C"
構造背后的原因之一,因此不會破壞符號。
如果將函數聲明為extern "C"
則編譯器將不會修改名稱,就像對調用的匯編器函數所做的那樣。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.