c++编写供其他工具使用的dll
2018-02-20 23:00
330 查看
以前我曾经说过dll的编写,但是以前编写的dll无法供其他工具使用
以前我们是这样写的
DllGenerator.h
DllGenerator.cpp
其中extern “C”是关键,有了extern “C”就可以摆脱c++的命名机制,输出函数名add,sub,这样这个dll就可以被c程序所使用了
但是,如果vb想使用这个dll呢,不好意思,不识别,想要识别这个函数,就必须要加上__stdcall约定,由于vb不是c,所以还要去掉extern “C”
改进之后的程序是这样的
DllGenerator.h
DllGenerator.cpp
编译成功之后,我们再vb中试一下
红色高亮部分是使用前的声明,请自行百度
结果如图
结果为3,测试成功
以前我们是这样写的
DllGenerator.h
#ifndef _DLLGENERATOR_H #define _DLLGENERATOR_H #ifdef DLLPROJ #define AMB extern "C" _declspec(dllexport) #else #define AMB extern "C" _declspec(dllimport) #endif AMB int add(int a, int b); AMB int sub(int a, int b); #endif
DllGenerator.cpp
#include "stdafx.h" #define DLLPROJ #include "DLLGenerator.h" int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; }
其中extern “C”是关键,有了extern “C”就可以摆脱c++的命名机制,输出函数名add,sub,这样这个dll就可以被c程序所使用了
但是,如果vb想使用这个dll呢,不好意思,不识别,想要识别这个函数,就必须要加上__stdcall约定,由于vb不是c,所以还要去掉extern “C”
改进之后的程序是这样的
DllGenerator.h
#ifndef _DLLGENERATOR_H #define _DLLGENERATOR_H #ifdef DLLPROJ #define AMB _declspec(dllexport) #else #define AMB _declspec(dllimport) #endif AMB int __stdcall add(int a, int b); AMB int __stdcall sub(int a, int b); #endif
DllGenerator.cpp
#include "stdafx.h" #define DLLPROJ #include "DLLGenerator.h" int __stdcall add(int a, int b) { return a + b; } int __stdcall sub(int a, int b) { return a - b; }
编译成功之后,我们再vb中试一下
红色高亮部分是使用前的声明,请自行百度
结果如图
结果为3,测试成功
相关文章推荐
- VS2010使用C#调用C++编写的dll,在其他电脑上无法运行的解决办法
- C/C++编写dll动态链接库使用操作与非基本类型参数声明错误
- C++编写的DLL与第三方通信中回调函数的巧妙使用
- 22.Silverlight使用WebService调用C++,Delphi编写的DLL文件
- C/C++编写dll动态链接库使用操作与非基本类型参数声明错误(2)
- 用C++编写dll并使用
- C/C++编写dll动态链接库使用操作与非基本类型参数声明错误(2)
- C#调用使用C++\CLI封装的标准C++ DLL问题:无法访问受保护的内存,这通常指示其他内存已损坏
- C++编写DLL并使用C++调用
- 如何使用C/C++为Python编写DLL/SO
- Eclipse for C/C++ (三)编写DLL文件之def文件的使用
- PB8调用使用C++与C#分别编写生成解压缩带有密码的zip压缩文件的动态链接库dll(部分内容转自互联网)
- 关于用c生成的dll在使用其他供应商的工具创建可执行模块时遇到的一些问题
- Unity3D中使用C#调用C++编写的DLL
- 使用Delphi调用C++编写的DLL
- Silverlight实用窍门系列:22.Silverlight使用WebService调用C++,Delphi编写的DLL文件【实例源码下载】
- Codeblosks用C++编写通用DLL供其他语言调用
- 使用Delphi调用C++编写的DLL
- 如何使用Visual Studio 2012的C++编写DLL
- 扩展Python__在python脚本中使用其他语言(c/c++/java/c#)编写的模块