ASM函数如何在VC中调用

rabbitzju 2001-12-29 01:58:10
比如说asm中定义
MyAsmFun proc

asm编译已经通过了。

在VC中直接调用MyAsmFun(),则提示
error C2065: 'MyAsmFun' : undeclared identifier

如果我在VC了声明extern "C" void MyAsmFun...
编译则提示
error LNK2001: unresolved external symbol _MyAsmFun

如何是好?谢谢。
...全文
167 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rabbitzju 2001-12-31
  • 打赏
  • 举报
回复
To LLnju:
都看那方面资料呢?
有没有好点的书和资料呢
Thanks
LLnju 2001-12-30
  • 打赏
  • 举报
回复
还有 ; 可要可不要, add bx , ax , 这些是16位的指令,现在大家用的好象都是 WIN32了,改为:

__asm {
mov eax , a
add eax , b
mov c , eax
};
LLnju 2001-12-30
  • 打赏
  • 举报
回复
to Happy_Wawe:插入汇编有时候太烦了,并且限制太多,还是直接用 汇编的方便
Happy_Wawe 2001-12-30
  • 打赏
  • 举报
回复

int a;
int b;
int c;

_asm
{
mov ax, a
mov bx, b
add bx
move c, ax
}

大概就这么写吧!汇编的每一句要不要";"我不记得了。
而且add 是不是只要一个“参数”也不确定。呵呵。
不过C里面用汇编肯定是这么用。
LLnju 2001-12-30
  • 打赏
  • 举报
回复
以下在 VC + masm32 下通过:

//test.cpp:
#include <iostream>
#include <conio.h>
using namespace std;

extern "C" int __stdcall TestAsm( int n );//!n!
extern "C" int varsTest;

void main()
{
cout << varsTest << endl;
cout << TestAsm( 10 ) << endl;

getch();
};

;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;TestAsm.asm
;/masm32/bin/ml /c /coff [/Zi] /Cp /Fo$(OutDir)/TestAsm.obj $(InputPath)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;
.386
.model flat , stdcall

public varsTest
public TestAsm

.data
varsTest dd 10

.code
TestAsm proc n : DWORD
.If n <= 1
mov eax , 1
ret
.Else
mov ebx , n
dec ebx
invoke TestAsm , ebx
inc ebx
imul ebx
ret
.EndIf
TestAsm endp

END
LLnju 2001-12-30
  • 打赏
  • 举报
回复
看看你汇编的函数是否使用 __cdecl 的调用约定,一般用的是 __stdcall 吧,C++种应该声明为 extern "C" void __stdcall MyAsmFun() , Asm 里你应该用 public MyAsmFun 或者用 /Zf 编译选项引出你的函数,另外 VC 用得是 COFF 格式的目标文件你应该用 /coff 的编译选项,以上都是在 VC + masm32 下。一般DEBUG版本我都用 /c /coff /Zf /Zi /Cp 几个编译选项,Release版本不用 /Zi。
LLnju 2001-12-30
  • 打赏
  • 举报
回复
才学Asm32的,以后多多交流
rabbitzju 2001-12-30
  • 打赏
  • 举报
回复
To LLnju:
你说的都是对的,我无法给分给你了
管理的时候你的文章都是Delete的状态。
你在随便Re我一篇吧。
hujun614 2001-12-29
  • 打赏
  • 举报
回复
我也很关心,呵呵, UP一下。
whiskers 2001-12-29
  • 打赏
  • 举报
回复
_asm{
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧