与自定义命名空间链接失败未解析的外部符号

时间:2016-01-21 22:19:11

标签: c++ windows visual-studio linker symbols

所以我正在尝试编译一个使用PIN和Python的大项目。问题是PIN有一些类型与Python相同。

所以我所做的是创建一个名称空间PIN::,以避免ambiguous symbol errors

所以现在代码编译得很好但是链接器没有找到PIN符号,因为它试图使用我的自定义PIN::命名空间找到它们而lib文件没有它。

这是错误:

1>main.obj : error LNK2001: unresolved external symbol "void __cdecl PIN::LEVEL_PINCLIENT::PIN_UnlockClient(void)" (?PIN_UnlockClient@LEVEL_PINCLIENT@PIN@@YAXXZ)

我是否可以指定搜索LEVEL_PINCLIENT::PIN_UnlockClient(void)而不是PIN::LEVEL_PINCLIENT::PIN_UnlockClient(void)所需的链接器?

干杯

1 个答案:

答案 0 :(得分:1)

解决链接器问题的一种方法是创建自己的DLL,作为PIN和Python的包装器。

在PIN包装器DLL中,创建PIN命名空间并在namespace中添加包装函数。与Python包装器DLL相同。

从其余代码中,使用namespace PINnamespace Python中的函数。