首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在非托管C++应用程序中使用IDL

如何在非托管C++应用程序中使用IDL
EN

Stack Overflow用户
提问于 2018-12-05 23:00:25
回答 1查看 733关注 0票数 0

应用程序的.exe允许将IDL定义转储到.IDL文件中。

使用midl,我可以创建一个.tlb文件。

但是在使用#import语句的C编译器中,我得到了错误不能打开源文件. .tlh

怎么修呢?

在VS Visual Basic项目中,我可以在COM-Interface中使用此应用程序,但也有其他问题。

谢谢你的建议,艾希

EN

回答 1

Stack Overflow用户

发布于 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:

代码语言:javascript
复制
// 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中我包括

代码语言:javascript
复制
#include "./TheServerApp.tlh"
#include "./TheServerApp.tli"

我也生成了TheServerApp.dll,但不知道还需要它

脆性TheServerApp.tlb

哪个报告

TlbImp :导入到TheServerApp.dll的类型库

所以也有文件TheServerApp.dll

在接下来的步骤中,我必须学习更多。

埃尔希

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53642089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档