用标准C编写COM dll

参考资料:

用标准C编写COM(一)COM in plain C,Part1 (http://blog.csdn.net/wangqiulin123456/article/details/8092358)

用标准C编写COM(二)COM in plain C,Part2

研究了一天,使用 vc6编译, 对VC6命令行编译配置了一下(http://blog.csdn.net/wenzhou1219/article/details/10573821),

在dos命令行使用 cl,link 最终完成了所有源代码的编译,并且生成的 com dll 能在脚本语言(vbscript, asp) 中成功调用。

 

-----------------------------------------------------------------------------

由于vc6头一回用,相关的编译命令不熟悉,查了半天资料:

编译:

cl IExample2.c /c

link /def:IExample2.def /dll IExample2.obj uuid.lib oleaut32.lib

 

//创建类型库

MIDL IExample2.idl

 


//注册 com dll

cl RegIExample2.c /c

link RegIExample2.obj user32.lib comdlg32.lib oleaut32.lib Advapi32.lib

 

 

//测试

cl IExampleApp2.c /c

link IExampleApp2.obj user32.lib uuid.lib oleaut32.lib Ole32.lib

 

-----------------------------------------------------------------------------

使用 gcc 编译:

 

//编译 com dll

gcc -shared -o IExample2.dll IExample2.c IExample2.def -luuid -loleaut32


//创建我们的类型库 (需要用到 vc6 的 MIDL)

MIDL IExample2.idl


//注册 com dll
gcc -o RegIExample2.exe RegIExample2.c -lcomdlg32 -loleaut32

 

//测试
gcc -o IExampleApp2.exe IExampleApp2.c -luuid -loleaut32 -lOle32

 

-----------------------------------------------------------------------------

 

最后,关于在 vbscript 中调用的时候,必需:IExample2.tlb (通过 MIDL IExample2.idl 生成的)

网上说可以将 tlb 文件嵌入到 dll 文件中,但操作上似乎有点复杂,一时没解决。

posted @   personnel  阅读(1104)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
友情链接:图片批量处理工具 gif动态图制作工具 制作电子相册 图片排版工具 制作淘宝主图视频 MKScript 鼠标键盘自动化脚本语言
点击右上角即可分享
微信分享提示