gpt4 book ai didi

c++ - 连接汇编和 C 问题

转载 作者:太空宇宙 更新时间:2023-11-04 07:42:48 25 4
gpt4 key购买 nike

试图了解如何链接在结构中定义的函数,该函数在汇编代码中,并且我试图从 c 中调用它。我认为我缺少一个步骤,因为当我调用该函数时,我得到一个未解析的外部符号...

;Assembly.asm
.686p
.mmx
.xmm
.model flat

include Definitions.inc

.code

?Initialize@Foo@@SIXPAUFee@@@Z proc
jmp $
?Initialize@Foo@@SIXPAUFee@@@Z endp

end



//CFile.c
struct Fee
{
signed long id;
}

struct Foo
{
static void Initialize(Fee *);
}


int startup(Fee * init)
{
Foo::Initialize(init); //<-- This is unresolved
return 0;
}

最佳答案

您的汇编代码定义了一个函数,其修饰名解码为

public: static void __fastcall Foo::InitializeCurrentCpu(struct Fee *)

通过 undname.exe 实用程序获得。 Foo::InitializeCurrentCpu() 与 Foo::Initialize() 不匹配,名称不匹配。调用约定也没有。

先用 C++ 编写此代码,然后查看 .map 文件以查找正确的修饰名称。或者用 extern "C"声明函数以抑制 C++ 修饰。

关于c++ - 连接汇编和 C 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1896833/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com