Calling C++ functions in MASM(在MASM中调用C++函数)
本文介绍了在MASM中调用C++函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在开发一个程序,该程序将使用MASM调用一些C++函数。我在一个单独的文件中定义了对2个整数求和并显示输出。
目前,我无法让‘main.cpp’运行asmMain()
从‘main.cpp’调用函数。
code.asm
; ---------------------------------------
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
main.cpp
#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 << "
The second number = ";
int newint;
cin >> newint;
return newint;
}
void printInt(int myint) {
cout << myint;
}
我在当前代码中得到的错误如下:
已开始生成:项目:PROJECT_NAME,配置:调试Win32
Main.cpp
Code.obj:错误LNK2019:Function_asmMain中引用的第一个外部Symbol_PromptFirst未解析
有关如何解决此问题的任何提示?
推荐答案
问题在于C++编译器mangles the symbols,这是extern "C"
构造背后的原因之一,因此符号不会损坏。
如果将函数声明为extern "C"
,则编译器不会损坏名称,就像您对所调用的汇编函数所做的那样。
这篇关于在MASM中调用C++函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:在MASM中调用C++函数
基础教程推荐
猜你喜欢
- 调用std::Package_TASK::Get_Future()时可能出现争用情况 2022-12-17
- 您如何将 CreateThread 用于属于类成员的函数? 2021-01-01
- 运算符重载的基本规则和习语是什么? 2022-10-31
- C++,'if' 表达式中的变量声明 2021-01-01
- 如何在 C++ 中处理或避免堆栈溢出 2022-01-01
- 什么是T&&(双与号)在 C++11 中是什么意思? 2022-11-04
- C++ 程序在执行 std::string 分配时总是崩溃 2022-01-01
- 设计字符串本地化的最佳方法 2022-01-01
- C++ 标准:取消引用 NULL 指针以获取引用? 2021-01-01
- 如何定义双括号/双迭代器运算符,类似于向量的向量? 2022-01-01