用标准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中创建一个“ ...
随机推荐
- 在delphi中生成GUID/自动获取临时表名......
什么是 GUID ? 全球唯一标识符 (GUID) 是一个字母数字标识符,用于指示产品的唯一性安装.在许多流行软件应用程序(例如 Web 浏览器和媒体播放器)中,都使用 GUID. GUID 的格式为 ...
- Python学习之路——day05
今日内容:1.可变与不可变类型:可变类型:值可以改变,但是id不变,证明就是在改变原值,是可变类型不可变类型:值改变,但是id也跟着改变,证明是残生了新的值,是不可变类型 2.数字类型2.1整型:记录 ...
- DotNetty 实现 Modbus TCP 系列 (二) ModbusFunction 类图及继承举例
本文已收录至:开源 DotNetty 实现的 Modbus TCP/IP 协议 ModbusFunction 类图如下: 如前文所述,所有请求/相应的 PDU 均继承自 ModbusFunction, ...
- 基于create-react-app的再配置
前面的话 使用Facebook官方推出的create-react-app脚手架,我们基本可以零配置搭建基于webpack的React开发环境.但是,如果需要个性化定制,则还需要基于create-rea ...
- July 算法习题 - 字符串4(全排列和全组合)
https://segmentfault.com/a/1190000002710424 思想:当前层各节点首元素不同,则各节点的剩余元素也不同:下一层节点交换范围为首元素以外的元素 全排列算法: vo ...
- ACM之路——上车了
校赛坚持到底,拿到了银牌:第一批进入ACM队集训,期末考试之前仍然代码不断,甚至感觉对不起大学第一次的期末考试,五天复习高数,两天复习英语,看到英语成绩是胸口突然好痛,好难受……就为了成为ACM正式队 ...
- 第四十九天 mysql 索引 元类
一 昨日回顾 视图 触发器 事务 什么是事务 逻辑上的一组操作 要么都成功 要么都失败 如何使用 start transaction 开启事务 mysql 默认一条sql就是一个事务 pymysql默 ...
- CodeForces615A-Bulbs-模拟
水题 #include <cstdio> #include <algorithm> using namespace std; ]; int main() { scanf(&qu ...
- BSGS&扩展BSGS
BSGS 给定\(a,b,p\),求\(x\)使得\(a^x\equiv b \pmod p\),或者说明不存在\(x\) 只能求\(\gcd(a,p)=1\)的情况 有一个结论:如果有解则必然存在\ ...
- 如何使用JPQL写纯SQL语句
使用JPQL,需要把SQL语句修改成类似HQL 语句.SQL 查询的是数据库,而JPQL 查询的是对象和属性,在语法上是有些不同的.对于有些用JPQL 无法写出来的查询,还是使用原生SQL写出来方便 ...