我正在基于Visual Studio 2008中的第三方SDK创建C ++ MFC DLL.SDK提供TLB文件夹,Lib文件夹(仅限.lib),Include文件夹(仅限.h和.hpp)和Bin文件夹(一些exes,DLL和.ax文件)。我试图通过以下方式将SDK库链接到我的DLL:
以这种方式做事由于链接问题(未声明的标识符等)导致编译错误,所以我为TLB添加了一个导入行:
#import "C:\Path\To\Tlb.tlb" raw_interfaces_only, raw_native_types, no_namespace, named_guids
这会弹出另一个关于类型重新定义的编译错误:
error C2011: '_SYSTEMTIME' : 'struct' type redefinition
我错过了什么?我是Windows编程的新手。 提前谢谢。
答案 0 :(得分:2)
我不知道为什么_SYSTEMTIME在<Windows.h>
中定义或由其引入的内容时重新定义。
无论如何,尝试从#import指令中删除no_namespaces。命名空间可以避免这些名称冲突。
答案 1 :(得分:1)
您尝试导入暴露已定义对象的类型库。
你从哪里得到这个图书馆?
您可以删除
no_namespace
但只有当类型库中的对象在其他命名空间中定义然后全局化时才有用。
您也可以只为导入指令
尝试一个属性raw_interfaces_only
这取决于您想要从TLB实现/导入的内容。
MSDN docs