5

我有一个 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是否可以解决这种错误?

4

2 回答 2

5

使用IDE查看TLB信息。
使用此帮助:如何:查看类型库信息

在 IDE:View-> Object Browser,单击“...”编辑自定义组件集,浏览您的 TLB 文件并添加以查看信息。

确认使用的命名空间。

于 2013-03-15T16:36:50.630 回答
0

使用命名空间解决链接器错误:例如:#import "<>" raw_interfaces_only using namespace <>

这将解决问题

于 2015-09-01T23:05:55.833 回答