2016-01-21 72 views
0

所以我想编译一个使用PIN和Python的大项目。问题是PIN的某些类型与Python中的类型相同。链接自定义名称空间失败无法解析的外部符号

所以我做的是创建一个命名空间PIN::,以避免有ambiguous symbolerrors

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

以下是错误:

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

我可以指定它需要搜索LEVEL_PINCLIENT::PIN_UnlockClient(void),而不是PIN::LEVEL_PINCLIENT::PIN_UnlockClient(void)链接?

干杯

回答

1

一种方法来解决问题的链接是创建自己的DLL充当包装对PIN和Python。

在PIN包装DLL中,创建PIN名称空间并在该namespace中添加包装函数。与Python包装器DLL一样。

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

+0

嗨,这可能会工作,但有很多功能,我将需要“包装”,如果我想这工作......没有任何方式告诉链接器使用指定名称时,它搜索函数库中? – user1618465

+0

如果有两个DLL具有相同的符号名称,那么如何告诉链接器使用一个DLL用于一个调用,而另一个DLL用于另一个调用? –

+0

好的,这里是问题:有没有什么办法告诉链接器在尝试搜索lib中的函数时删除'PIN ::'命名空间?谢谢! – user1618465