-->

DLL:导出为C / C ++函数?(DLL : export as a C/C++ functio

2019-10-19 04:53发布

我生成从C ++代码在Visual的DLL。 依赖步行者看到导出作为C功能3层的功能。

我做了一个项目使用SCons做生成的DLL,和的3个功能2不被视为C函数。

是什么使看作是一个或C ++函数的函数,而不需要修改代码? 它必须是在编译/链接选项,但我没有找到任何相关的事情。

该功能是由宏前缀:AM_LIB_EXPORT

在.H,我有:

#ifdef _WIN32
#define AM_LIB_EXPORT __declspec(dllexport)
#else
#define AM_LIB_EXPORT
#endif // _WIN32

谢谢。

Answer 1:

是什么使看作是一个或C ++函数的函数,而不需要修改代码?

由C ++编译器编译的函数自动成为“C ++ - 功能”和名字的mangling发生解决C ++的功能,如命名空间和过载。 为了得到“C”的出口名称,必须使用上述extern "C"函数声明预选赛。 可替代地一个巨大extern "C" { .. }方框围绕含有原型的标题。

如果这不能解决您的问题,它可能涉及到的DllImport / DLLEXPORT。 如果你#define AM_LIB_EXPORT __declspec(dllexport)在您的DLL构建,您通常还需要使它dllimport的应用,以便链接对你的DLL链接器知道在哪里符号从取。



Answer 2:

这是一个名字改编的问题? 如果你不使用extern "C"在你的函数声明,他们将得到名称错位。



Answer 3:

我找到了原因:

出口也被加入作为其它附加命令行选项(/出口)。 在这种情况下,它被导出为C函数。 我不明白为什么...

我删除该其它附加命令行开关。

谢谢你们。

我仍然不知道如何用标记线为“解决”?



文章来源: DLL : export as a C/C++ function?