用标准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 文件中,但操作上似乎有点复杂,一时没解决。
用标准C编写COM dll的更多相关文章
- C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)
C#调用C++编写的DLL函数, 以及各种类型的参数传递 1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int ...
- C#动态调用C++编写的DLL函数
C#动态调用C++编写的DLL函数 动态加载DLL需要使用Windows API函数:LoadLibrary.GetProcAddress以及FreeLibrary.我们可以使用DllImport在C ...
- 通过C#去调用C++编写的DLL
这个问题缠了我2个小时才弄出来,其实很简单.当对方提供一个dll给你使用时,你需要去了解这个dll 是由什么语言写的,怎么编译的,看它的编译类型.这样即使在没有头绪时,你可以先尝使用一些比较热门的编译 ...
- C++项目中采用CLR的方式调用C#编写的dll
1.注意事项:在编写C#DLL类库时,最好不要出现相同的命名空间,否则在C++中调用可能会出现编译错误.2.将C#的源码生成的“dll”文件复制到C++项目中的Debug目录下3.将C++项目属性设置 ...
- [JNA系列]Java调用Delphi编写的Dll之JNA使用
介绍 给大家介绍一个最新的访问本机代码的 Java 框架 —JNA . JNA(Java Native Access) 框架是一个开源的 Java 框架,是 SUN 公司主导开发的,建立在经典的 JN ...
- 使用clr 调用C#编写的dll中的方法的全解释
使用clr 调用C#编写的dll中的方法的全解释1.数据库初始化:将下面这段代码直接在运行就可以初始化数据库了exec sp_configure 'show advanced options', '1 ...
- C#调用C++编写的dll
界面还是C#写的方便点,主要是有一个可视化的编辑器,不想画太多的时间在界面上.但是自己又对C++了解的多一些,所以在需要一个良好的界面的情况下,使用C++来写代码逻辑,将其编译成一个dll,然后用C# ...
- C++调用C#编写的DLL【转】
1.打开VS新建项目 2.在新建项目窗口中选择其他语言->Visual C++->Win 32控制台应用程序,设置名称:MathCon,设置解决方案名:MathCon,这个名字随便你自己取 ...
- Delphi 调用C# 编写的DLL方法
近来,因工作需要,必须解决Delphi写的主程序调用C#写的dll的问题.在网上一番搜索,又经过种种试验,最终证明有以下两种方法可行: 编写C#dll的方法都一样,首先在vs2005中创建一个“ ...
随机推荐
- Flutter上拉加载下拉刷新---flutter_easyrefresh
前言 Flutter默认不支持上拉加载,下拉刷新也仅仅支持Material的一种样式.Android开发使用过SmartRefreshLayout的小伙伴都知道这是一个强大的刷新UI库,集成了很多出色 ...
- TextView不用ScrollViewe也可以滚动的方法
转自:http://www.jb51.net/article/43377.htm android TextView不用ScrollViewe也可以滚动的方法. TextView textview = ...
- windows php7 安装redis扩展
1,首先查看phpinfo 这会决定扩展文件版本(特别注意以php版本的architecture是x86还是64为准,不能以操作系统为准): 2.根据PHP版本号,编译器版本号和CPU架构 一定要根 ...
- Plugin/Preset files are not allowed to export objects,webpack报错/babel报错的解决方法
1.为什么会报错 ? 这里抱着错误是因为 babel 的版本冲突. 多是因为你的 babel 依赖包不兼容. 可以查看你的 package.json 的依赖列表 即有 babel 7.0 版本的( @ ...
- 一、VScode构建.NET应用程序
一.准备工具 1.安装.NET SDK(软件开发工具包) https://microsoft.com/net/core 2.安装VScode并安装 3.安装VS Code C# extension(即 ...
- python numpy笔记(重要)
1.np.array 的shape (2,)与(2,1)含义 ndarray.shape:数组的维度.为一个表示数组在每个维度上大小的整数元组.例如二维数组中,表示数组的“行数”和“列数”. ndar ...
- Mvc校验用户没有登录就跳转的实现
看字面意思很简单,就是判断用户是否登录了,如果没有登录就跳转到登陆页面. 没错,主要代码如下(这里就不写判断登录了,直接跳转) 首先在控制器中新建一个BaseController public cla ...
- asp.net—WebApi跨域
一.什么是跨域? 定义:是指浏览器不能执行其他网站的脚本,它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制. 同源策略限制了以下行为: 1.Cookie.LocalStora ...
- HTML5 ----- deviceorientation API
当我们把设备举到面前,就是坐公交车时玩手机的状态,手机的宽度(水平方向)就是X轴,从左向右依次变大:手机的高度(垂直方向)就是y轴,从下到上依次变大: 眼光盯着屏幕,我们的视线就是Z轴,离我们的眼睛越 ...
- Servlet篇 之 web服务器
创建web项目,在web项目中创建html页面,然后把项目部署到web服务器里面,启动服务器之后,可以使用浏览器通过URL地址的方式,访问到web项目中的html页面了 Web服务器: 常用tomca ...