应用程序的.exe允许将IDL定义转储到.IDL文件中。
使用 midl ,我可以创建一个 .tlb 文件。
但是在C编译器中, #import 语句 我遇到了错误 无法打开源文件 ... ... .tlh
如何解决?
在VS Visual Basic项目中,我可以将此应用程序与COM接口一起使用,但是还有其他麻烦。
谢谢你的建议 嗯
答案 0 :(得分:0)
我做到了,就像KimGräsman在 https://stackoverflow.com/a/1854637/3127177
这是应用程序TheServerApp的出路:
所有已安装 Microsoft Visual Studio Community 2017
使用命令行
搜索并执行 vcvars32.bat
然后执行
观看
(如果在第一次必须以管理员身份执行oleview.exe时出现问题)
在oleview窗口中,选择View TypeLibs
并打开TheServerApp.exe
,然后文件->另存为
因此, IDL定义存储在TheServerApp中。 idl
cd TheServerApp.IDL所在的位置
并执行
midl TheServerApp.IDL
因为我得到了错误
TheServerApp.IDL(481):错误MIDL2025:语法错误:期望在“单个”附近输入类型规范
Client \ TheServerApp.IDL(481):错误MIDL2026:无法从较早的语法错误中恢复;中止编译
我编辑了TheServerApp.IDL并用double替换了所有单词single
(请参见here)
现在执行 midl TheServerApp **。IDL **
产生文件TheServerApp **。tlb **
因为在Visual Studio项目中#import TheServerApp.tlb报告错误
在您的项目中编写一个小程序import.cpp,内容如下:
// file to import with full path
**#import** " ... /**TheServerApp.tlb**"
int main(int argc, char* argv[])
{
}
并在命令行中按上述方式执行vcvars32.bat
执行 cl ./imports.cpp
生成TheServerApp **。tlh **和TheServerApp **。tli **
在我包含的.cpp中
#include "./TheServerApp.tlh"
#include "./TheServerApp.tli"
我还生成了TheServerApp.dll,但不知道会进一步需要它
tlbimp TheServerApp.tlb
哪个报告
TlbImp:导入到TheServerApp.dll的类型库
所以也有TheServerApp.dll文件
对于下一步,我必须学习更多
嗯