c++基础4:c++工程的动态链接库dll的导出使用方法
2013-01-04 15:27
351 查看
c++工程生成的动态链接库如果想给别的工程(包括.net工程,MFC工程等)使用,就必须遵守一些规则进行编译导出动态库(注意:这里是指两个不同的工程调用,如果同一个工程里的函数就不用这么做了):
下面以add函数为例说明:
1.首先在函数定义的时候采取标准的调用约定_Stdcall(编译器将add改名),即int _Stacall add(),该约定是pascal的标准调用约定(所谓的调用约定就是编译器按照标准将函数add改名,改名规则是在输出函数名前加上一个下划线前缀,后面加上一个“@”符号和其参数的字节数,格式为_functionname@number。如函数int
func(int a, double b)的修饰名是_func@12,这个步骤还有其他作用,所以不能省略,否则c#在调用该接口时会报错)
2.新建一个def文件,将该文件添加到c++的工程中,然后在项目属性--配置属性--链接器--输入--模块定义文件中指定def文件的路径(这步很重要),该文件中作用是将add函数名强制定义一个输出的名字,使得add函数导出后名字不会改变(def文件的函数导出写法请参照网上资料)【这部做完后就可以在c#的工程中使用c++的动态库dll】
3.在MFC应用程序中先加载导出的动态库dll需要的头文件.h,用于声明需要调用的函数(include “······.h”)【也可以在MFC工程右键--》属性--“配置属性”---“C/C++”---“常规”---“附加包含目录”里添加需要的头文件】
4.在MFC应用程序中加载动态库的导入库文件,使得程序在链接时可以找到函数的实现地方(#pragma comment( lib,“··········.lib”)【也可以在MFC工程右键--》属性--“配置属性”---“链接器”---“常规”---“附加库目录”里添加需要的头文件】
5.接下来在MFC应用程序中就可以调用dll中的add函数了
下面以add函数为例说明:
1.首先在函数定义的时候采取标准的调用约定_Stdcall(编译器将add改名),即int _Stacall add(),该约定是pascal的标准调用约定(所谓的调用约定就是编译器按照标准将函数add改名,改名规则是在输出函数名前加上一个下划线前缀,后面加上一个“@”符号和其参数的字节数,格式为_functionname@number。如函数int
func(int a, double b)的修饰名是_func@12,这个步骤还有其他作用,所以不能省略,否则c#在调用该接口时会报错)
2.新建一个def文件,将该文件添加到c++的工程中,然后在项目属性--配置属性--链接器--输入--模块定义文件中指定def文件的路径(这步很重要),该文件中作用是将add函数名强制定义一个输出的名字,使得add函数导出后名字不会改变(def文件的函数导出写法请参照网上资料)【这部做完后就可以在c#的工程中使用c++的动态库dll】
3.在MFC应用程序中先加载导出的动态库dll需要的头文件.h,用于声明需要调用的函数(include “······.h”)【也可以在MFC工程右键--》属性--“配置属性”---“C/C++”---“常规”---“附加包含目录”里添加需要的头文件】
4.在MFC应用程序中加载动态库的导入库文件,使得程序在链接时可以找到函数的实现地方(#pragma comment( lib,“··········.lib”)【也可以在MFC工程右键--》属性--“配置属性”---“链接器”---“常规”---“附加库目录”里添加需要的头文件】
5.接下来在MFC应用程序中就可以调用dll中的add函数了
相关文章推荐
- Delphi调用C++编写的动态链接库dll的方法
- Java使用JNI调用C/C++的DLL动态链接库1
- Java使用JNI调用C/C++的DLL动态链接库2
- 【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
- PB8调用使用C++与C#分别编写生成解压缩带有密码的zip压缩文件的动态链接库dll(部分内容转自互联网)
- DLL工程无法导出lib文件解决方法
- C#反射动态调用dll中的方法及使用QuartZ.net实现作业调度
- 在Visual Studio 2010中调试DLL工程的方法 (C++)
- C++编译时函数名修饰约定规则和DLL中导出函数的方法
- Java调用C/C++编写的第三方dll动态链接库
- [C/C++基础] C语言常用函数strlen的使用方法
- C#使用EPPlus.dll动态库在一般处理程序中实现将datatable导出到excel
- pro*C 使用动态sql方法四实现数据批量导入导出
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目 .
- VS或者Qt调用外部动态链接库dll的方法
- Java调用C/C++编写的第三方dll动态链接库
- c++ ActiveX基础1:使用VS2010创建MFC ActiveX工程项目
- 【C++基础】类型转换运算符的使用方法(reinterpret_cast、 const_cast、static_cast、dynamic_cast)
- C++动态加载DLL调用方法
- C++编译时函数名修饰约定规则和DLL中导出函数的方法