应用程序的.exe允许将IDL定义转储到.IDL文件中。
使用midl,我可以创建一个.tlb文件。
但是在使用#import语句的C编译器中,我得到了错误不能打开源文件. .tlh
怎么修呢?
在VS Visual Basic项目中,我可以在COM-Interface中使用此应用程序,但也有其他问题。
谢谢你的建议,艾希
发布于 2018-12-07 14:05:23
我就像金·葛拉斯曼在https://stackoverflow.com/a/1854637/3127177上建议的那样
下面是我的应用程序TheServerApp的方式:
都安装了MicrosoftVisualStudioCommunity2017
使用命令行
搜索并执行vcvars32.bat
然后执行
oleview
(如果oleview.exe在第一次执行时出现问题,必须作为管理员执行)
在oleview窗口中选择View TypeLibs
并打开TheServerApp.exe
然后将文件->保存为
因此,TheServerApp.idl中存储了IDL定义。
cd TheServerApp.IDL所在的位置
执行
midl TheServerApp.IDL
因为我犯了错误
TheServerApp.IDL(481):error MIDL2025 :语法错误:期望类型规范接近“单一”
Client\TheServerApp.IDL(481):错误MIDL2026 :无法从早期语法错误中恢复;中止编译
我编辑了TheServerApp.IDL,把所有单词都换成了
(见这里 )
现在midl TheServerApp**.IDL**的执行
文件TheServerApp**.tlb**中的结果
因为Visual项目中的#导入TheServerApp.tlb报告了一个错误
在项目中编写一个包含以下内容的小程序imports.cpp:
// file to import with full path
**#import** " ... /**TheServerApp.tlb**"
int main(int argc, char* argv[])
{
}在命令行中执行vcvars32.bat,如下所示
执行cl ./imports.cpp s.cpp
生成TheServerApp**.tlh**和TheServerApp**.tli**
在.cpp中我包括
#include "./TheServerApp.tlh"
#include "./TheServerApp.tli"我也生成了TheServerApp.dll,但不知道还需要它
脆性TheServerApp.tlb
哪个报告
TlbImp :导入到TheServerApp.dll的类型库
所以也有文件TheServerApp.dll
在接下来的步骤中,我必须学习更多。
埃尔希
https://stackoverflow.com/questions/53642089
复制相似问题