【发布时间】:2013-03-01 03:49:12
【问题描述】:
我有一个 tlb 文件,其中包含一些我需要使用的函数声明。
如果我使用
#import "type_library.tlb"
我可以从我的代码中正确引用该函数:
tlb_namespace::required_function();
但是当我编译项目时,链接器说 tlb_namespace::required_function 是一个未解析的外部符号。
我怎样才能成功构建这样的项目?
编辑:
我在一个虚拟 VBA 访问项目中使用了相同的类型库。我已经添加了对类型库的引用,并且我注意到类型库中包含的一些函数被正确调用。但其中一些不是。 VBA 说它无法在相关的 dll 中找到它们的入口点。
这可以解释构建 c++ 应用程序时未解析的外部符号吗?
我还注意到失败的函数在 tlb 中声明如下:
UPPER_function_name
但在 dll 中是这样声明的:
Upper_function_name
这可能是问题吗?
这种错误直接修改二进制tlb文件或者dll是否可以解决?
【问题讨论】:
-
是
#import "type_library.tlb"项目中此 tlb 的唯一 #import 指令。它是否与函数调用位于同一个 cpp 中?生成的 .tlh 和 .tli 文件中如何定义required_function? -
@ZdeslavVojkovic 目前的项目是一个非常简单的项目,所以#import 只是一个,它驻留在调用的同一个 .cpp 文件中。我试图生成 .tlh 和 .tli 文件......它们只有在我转到项目属性\预处理器生成预处理文件时才会出现。但是我可能不会以正确的模式将它们添加到项目中,因为如果这样做,我会收到另一个链接器错误。
-
您不必添加它们。它们将在构建期间在您的发布/调试文件夹中创建,因此请在此处查找它们。
-
文件已创建,但现在链接器说:“找不到 .\Debug\stdafx.obj
-
显然,您还有其他一些问题。尝试全部重建,如果仍有错误,请发布完整的构建日志。很难说这种方式
标签: visual-c++ com visual-studio-2005