C ++函数调用汇编模块

时间:2011-06-02 13:16:51

标签: c++ masm name-decoration

我想在程序集中编写一个自定义模块,并让我的C ++函数调用它。我不想从头开始,而是想在C中编写“草稿”,让编译器生成蓝色打印组件源,即/ FA编译器选项生成的列表文件。

但是,我发现生成的所有过程名称都已经过装饰形式。此外,MASM将再次进行自己的名称装饰。因此,如果我在不首先手动解开编译器生成的过程名称的情况下组装我的版本,那么我会收到链接器错误,因为函数名称不匹配。

是否可以防止此类重复名称的装饰?

2 个答案:

答案 0 :(得分:1)

声明函数extern "C"应该导致生成的汇编程序显示您应该在汇编程序中使用的名称。只是不要忘记在标题中使它extern "C",稍后将其声明为C ++。

答案 1 :(得分:1)

您可以将您的功能声明为extern "C"。这样,它最多会在名称之前得到一个下划线:

extern "C"{
  void foo(int bla){
  }
}

将成为

_foo