我有一个tlb文件,其中包含一些我需要使用的函数声明。
如果我使用
#import "type_library.tlb"
我可以从我的代码中引用该函数:
tlb_namespace::required_function();
但是当我编译项目时,链接器说tlb_namespace :: required_function是一个未解析的外部符号。
我如何成功建立这种项目?
编辑:
我在Dummy VBA访问项目中使用了相同的类型库。我已经添加了对类型库的引用,我注意到类型库中包含的一些函数被正确调用。但其中一些不是。 VBA表示它无法在相关的dll中找到它们的入口点。
这可以解释构建c ++应用程序时未解析的外部符号吗?
我还注意到失败的函数在tlb中声明如下:
UPPER_function_name
但在dll中声明如下:
Upper_function_name
这可能是问题吗?
是否有可能直接修改二进制tlb文件或dll来解决这种错误?
答案 0 :(得分:4)
使用IDE查看TLB信息 使用此帮助:How to: View Type Library Information
在IDE:View->对象浏览器,单击“...”编辑自定义组件集,浏览TLB文件并添加到查看信息。
确认用于的命名空间。
答案 1 :(得分:0)
use the namespace to resolve the linker error: example: #import "<>" raw_interfaces_only using namespace <>
this will resolve the problem