【问题标题】:Declaring methods extern in C++在 C++ 中声明外部方法
【发布时间】:2012-08-03 18:21:41
【问题描述】:

我已经有一些程序打算用作用汇编编写的 C++ 方法(具有正确的调用约定和名称修改)。但是,当我尝试使用它们时

class Foo {
    extern void foo();
}

我得到“类成员的无效存储类”。如何正确地在外部定义 C++ 方法?

一种解决方法是生成一个 thunk,定义简单地调用程序集版本的方法,使用内联程序集来支持 thiscall 约定。事实上,我已经有了生成这些的代码。不过,我真的很想让这种更直接的方法发挥作用。

【问题讨论】:

  • 您是否尝试不使用extern
  • 您可能可以使用extern "C" void foo();,它将使用 C 的调用约定(无名称修饰/修饰)。您应该可以从程序集中调用它们。

标签: c++ assembly linker


【解决方案1】:

只留下extern。函数默认对外可见。

【讨论】:

  • 您可能希望将它们公开。或者你可以切换到 struct。
  • 是否公开不应该对链接产生影响。这只对编译器很重要。
  • 是的,我知道。这只是一般的观察。
猜你喜欢
  • 2021-07-08
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多