2

我正在尝试导入一个 dll,即 msado15.dll。我可以用解决方案做到这一点;

#import <C:\\Program Files\\Common Files\\System\\ado\\msado15.dll>  \
rename( "EOF", "AdoNSEOF" )

但我不能用这个来分发任何东西。

我已经尝试通过注册表并为它找到了一个 libid,所以我正在尝试:

#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" rename( "EOF", "AdoNSEOF" )

但我收到这些错误

1>Timestream.cpp(5): 警告 C4010: 单行注释包含换行符 1>Timestream.cpp(6): 警告 C4278: 'RGB': 类型库 '2DF8D04C-5BFA-101B-BDE5- 中的标识符00AA0044DE52' 已经是一个宏;使用“重命名”限定符 1>Timestream.cpp(6):警告 C4278:“RGB”:类型库“2DF8D04C-5BFA-101B-BDE5-00AA0044DE52”中的标识符已经是一个宏;使用“重命名”限定符 1>Timestream.cpp(6):警告 C4278:“RGB”:类型库“2DF8D04C-5BFA-101B-BDE5-00AA0044DE52”中的标识符已经是一个宏;使用“重命名”限定符 1>Timestream.cpp(6):警告 C4278:“RGB”:类型库“2DF8D04C-5BFA-101B-BDE5-00AA0044DE52”中的标识符已经是一个宏;使用“重命名”限定符 1>Timestream。cpp(6): 警告 C4278: 'RGB': 类型库 '2DF8D04C-5BFA-101B-BDE5-00AA0044DE52' 中的标识符已经是一个宏;使用“重命名”限定符 1>Timestream.cpp(6):警告 C4278:“RGB”:类型库“2DF8D04C-5BFA-101B-BDE5-00AA0044DE52”中的标识符已经是一个宏;使用“重命名”限定符

我如何让它发挥作用,这是最好的方法吗?我查看了有关 msado15.dll 的其他问题,但它们似乎涉及不同的问题。

谢谢,詹姆斯

4

1 回答 1

3
#import "libid:2DF8D04C-5BFA-101B-BDE5-00AA0044DE52" rename( "EOF", "AdoNSEOF" )

那是一个类型库,但它是错误的。这解释了你得到的所有错误。启动 regedit.exe 并导航到HKCR\TypeLib并滚动到您要求的 libid。请注意 2.0\0\win32 键如何指向 MSO.DLL。那是一个 Office 类型库。

若要找到正确的 guid,请从 Visual Studio 命令提示符运行 OleView.exe。文件 + 查看 Typelib 并导航到 msado15.dll。您将在顶部看到所需的 guid,库部分的 uuid() 属性:

uuid(B691E011-1797-432E-907A-4D8C69339129)

因此:

#import "libid:B691E011-1797-432E-907A-4D8C69339129" rename( "EOF", "AdoNSEOF" )

请注意,这是一个非常旧的版本,您应该使用 msado28.tlb

于 2012-07-13T13:25:37.600 回答