【问题标题】:Prevent `nvcc` from mangling function names [duplicate]防止`nvcc`修改函数名称[重复]
【发布时间】:2018-08-04 21:01:33
【问题描述】:

如何防止nvcc(CUDA c++ 编译器)破坏我的函数名称,以便我可以从我用作 apache 模块的 C 程序中调用这些函数。

请注意,我使用g++ 将对象链接在一起,它不知道nvcc 的名称。

【问题讨论】:

  • 另一个答案中缺少#ifdef 意味着C 编译器(用于编译apache 模块)会抱怨,因为它不理解extern 调用。我猜想选择正确的编译器来避免该特定问题是可以解决的(当然,在使用 g++ 编译中间 cpp 文件的地方插入另一个间接级别会起作用),但这是不必要的。此外,对于我使用的任何术语组合,搜索引擎都没有提出另一个问题。

标签: cuda linker g++ nvcc


【解决方案1】:

您需要通知nvcc,您指的是nvcc 将了解的宇宙外部函数。为此,我们将函数声明为 extern

在您的.h 文件中:

#ifdef __cplusplus
extern "C" {
#endif

<rest of your header>

#ifdef __cplusplus
}
#endif

在您的.cu 文件中:

extern "C" {

<rest of your class definition>

}

【讨论】:

    猜你喜欢
    • 2020-04-28
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-06
    • 2017-06-08
    • 2012-01-23
    相关资源
    最近更新 更多