c++引用汇编语言报错
本帖最后由 我叫学得会 于 2021-4-11 18:21 编辑师傅们,我复现资料上的代码例子,在c++引用汇编模块,不知道是哪里没有设置好,报一堆错误,还请师傅们指点
#include <windows.h>
#include <stdio.h>
int main()
{
LPVOID lp = GetProcAddress(LoadLibraryA("user32.dll"), "MessageBoxA");
char * pszData = "Hello world";
_asm
{
push 0
push 0
push pszData
push 0
call lp
}
return 0;
}
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2440 “初始化”: 无法从“const char ”转换为“char *” 汇编1 E:\mytest\汇编1.cpp 9
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4235 使用了非标准扩展: 不支持在此结构上使用“__asm”关键字 汇编1 E:\mytest\汇编1.cpp 10
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 12
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2143 语法错误: 缺少“;”(在“常数”的前面) 汇编1 E:\mytest\汇编1.cpp 12
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2146 语法错误: 缺少“;”(在标识符“push”的前面) 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2143 语法错误: 缺少“;”(在“常数”的前面) 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2146 语法错误: 缺少“;”(在标识符“push”的前面) 汇编1 E:\mytest\汇编1.cpp 14
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 14
错误信息呢 wp231957 发表于 2021-4-11 18:20
错误信息呢
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2440 “初始化”: 无法从“const char ”转换为“char *” 汇编1 E:\mytest\汇编1.cpp 9
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C4235 使用了非标准扩展: 不支持在此结构上使用“__asm”关键字 汇编1 E:\mytest\汇编1.cpp 10
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 12
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2143 语法错误: 缺少“;”(在“常数”的前面) 汇编1 E:\mytest\汇编1.cpp 12
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2146 语法错误: 缺少“;”(在标识符“push”的前面) 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2143 语法错误: 缺少“;”(在“常数”的前面) 汇编1 E:\mytest\汇编1.cpp 13
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2146 语法错误: 缺少“;”(在标识符“push”的前面) 汇编1 E:\mytest\汇编1.cpp 14
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2065 “push”: 未声明的标识符 汇编1 E:\mytest\汇编1.cpp 14 这种写法只能是vc60的吧 gcc却是不支持这样写法
不知道你的编译器是啥 自己先百度一下吧 本帖最后由 肖-肖 于 2021-4-11 21:08 编辑
将:char * pszData = "Hello world";
改为:
char str[]="Hello world";
char* pszData = str;
试试吧!
这种嵌套的也确实是只有:Visual C++ 这个编译器可以 wp231957 发表于 2021-4-11 20:49
这种写法只能是vc60的吧 gcc却是不支持这样写法
不知道你的编译器是啥 自己先百度一下吧
vs2019 的MSVC++ 肖-肖 发表于 2021-4-11 21:07
将:char * pszData = "Hello world";
改为:
char str[]="Hello world";
在vs2019,怎么才能可以呢? 我叫学得会 发表于 2021-4-11 21:56
在vs2019,怎么才能可以呢?
我没有环境,无法帮你,但是我简单的搜了一下
发现32位内联汇编,你的代码应该没有问题
可是64位内联汇编就会报和你一样的错误
错误信息也狠明显,不支持__asm关键字
解决办法狠复杂,我没往下看 我叫学得会 发表于 2021-4-11 21:56
在vs2019,怎么才能可以呢?
这个我不会{:10_277:} wp231957 发表于 2021-4-11 22:03
我没有环境,无法帮你,但是我简单的搜了一下
发现32位内联汇编,你的代码应该没有问题
可是64位内联汇 ...
想不明白,我看别人视频教程上的案例,vs2017上就可以这么运行,我原样搬下来试运行的.... 我叫学得会 发表于 2021-4-12 08:50
想不明白,我看别人视频教程上的案例,vs2017上就可以这么运行,我原样搬下来试运行的....
那你就看一下你的系统是32还是64 wp231957 发表于 2021-4-12 08:52
那你就看一下你的系统是32还是64
64用64的编译中...
页:
[1]