GNU C ++导入名称修改

时间:2017-11-07 02:10:55

标签: gcc name-mangling

我正在开发一个独立的php扩展程序。在对全局(外部)变量出现问题之后,我注意到Visual C导入库(我从未使用VC而我根本不知道)已经对变量和函数进行了不同的命名。 GNU编译器破坏了相同的功能,没有问题。在dll和libs中,变量具有双下划线,其中函数只有一个。 例; (伪)

#define EXT_API __declspec(dllimport)

extern "C"
{ 
EXT_API int func(void);
EXT_API extern int data;
}

给出(在lib / dll中)

_imp__func

__imp__data

但GCC搜索

_imp__func  (OK)

_imp__data  (unresolved)

如何配置GCC以破坏数据的导入名称;像__imp__name

提前致谢。

注意:我的问题不在于编译器如何破坏功能。函数和数据已使用相同的选项/首选项进行编译,但VC已生成_imp__func和__imp__data。我使用相同的选项(匹配VC结果)在同一模块上编译数据和函数,GCC生成_imp__func和_imp__data。 GCC我错过了什么?

0 个答案:

没有答案