MinGW 是 GCC 的 Windows 版本,稳定版已经到了 4.5.2,功能和性能上很好,感觉不比 Microsoft 自家的 VC 差啊.但是 MinGW 下使用和创建 DLL 倒是要特别注意,问题主要集中在 g++ 编译器(C++ 的 GNU 版本编译器)对于 DLL 的函数输入以及输出的名称修饰.调用协议上和 VC 编译器是有很大区别的. 1.MinGW 如何使用一个标准的 DLL.这里标准 DLL 指的是采用 __stdcall 调用协议.并且导出函数名称干干净净,没有函数名尾部的…
今天尝试用CodeBlocks写了一个简单的Dll,发现生成的 dll 文件导出的函数名后面都有一个 @xxx 从生成的 libDll2.def 中看到: EXPORTS DllMain@ @ Max@ @ SomeFunction@ @ funReturnStr2@ @ funReturnStr@ @ updateInt2@ @ updateInt@ @ updateStr@ @ 至于为什么导出的函数名后面会带@的解释: _stdcall调用约定的函数会有@,后面的数字表示参数总共所占字节数,…
VC++2008 用空工程创建 DLL 一.创建 DLL 工程项目: 1)点击菜单[File] -> [New] -> [Project...] 弹出 “New Project” 对话框: 2)在左侧 [Project types:] 树形框中展开 [Visual C++] 选择 [Win32]: 3)在右侧 [Templates:] 视图框中选择 [Win32 Project]: 4)在 [Name:] 对应的文本框中填写好项目名称: 5)在 [Location:] 对应的文本框中选好项目位…
将MinGW编译的openssl dll导出def和lib供MSVC使用 前面我们用mingw把openssl 编译成了动态库,得到下面2个dll文件: libeay32.dll ssleay32.dll 然后用下面的脚本生成Windows MSVC需要的模块定义文件(.def, .lib和.exp), 然后就可以在VC中使用了. 前提系统要安装VS. 系统要求: Windows7+VS Studio (2008 and later)+MSYS 1) 根据32位dll生成模块定义文件的pytho…
类库让我们的代码可复用,我们只需要在类库中声明变量一次,就能在接下来的过程中无数次地使用,而无需在每次使用前都要声明它.这样一来,就节省了我们的内存空间.而想要在类库添加什么类,还需取决于类库要实现哪些功能.创建一个类库其实是非常容易的,这篇文章就来向大家分享一下如何在C#中创建dll类库. 类库的文件扩展名是 .dll(Dynamic Linkable Library 即动态链接库文件) 类库的好处: 提高程序的性能. 节省时间. 节省内存空间. 现在我们一起来看下如何轻松创建dll类库的.…
先看我的总结: 总结: 1.头文件中如果想以C形式提供,要判断,如果定义了 _cplusplus, extern "c"{  这里写接口声明 } 2.接口声明中,要表明接口接入点的方式, __stdcall 3.记得创建定义文件,文件中指明了DLL对外提供了哪些接口 4.添加资源文件,添加资源文件的方式.资源文件的作用 5.生成dll的时候,注意如果是release还是debug的,如果是release要配置 其 代码生成方式为 多线程/MT. 6.生成的.lib文件是别人调用开发时使…
from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解决方案的编程环境是C#模式,这样就可以有很多智能的提示或快捷的编程方式在整个解决方案中都可以使用. 一:创建C#控制台应用程序:用于调用C++编写的DLL (1)启动VS2015>文件>新建>项目,在弹出的新建项目对话框中按下图进行选择填写,先填写项目的名称,再修改解决方案的名称. (2)项…
我以前写过一个小短文,介绍MinGW gcc 生成动态链接库 dll 的一些问题.当时写的并不全面.近期又遇到写新的问题.这里记录一下,做个补充. 通常情况下,dll 中的函数假设採用 _stdcall ,则生成的dll中函数名会被修饰. 比方有例如以下的函数: //dll.c int  _stdcall add(int a, int b) {     return a + b; } 终于 dll 文件里的函数名是 add@8 可是有时我们希望函数名不要加入这样的修饰,就像 windows ap…
创建DLL Dll是动态链接库的缩写,可以作为附加代码动态映射到进程的地址空间中. 动态库的一般创建方法如下 方法1.使用 __declspec(dllexport)  方式导出 一般的框架如下 //头文件 #ifndef __MAIN_H__ #define __MAIN_H__ #include <windows.h> #ifdef MAIN_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __de…
源:VS2010环境下用ANSI C创建DLL和使用方法 . 创建DLL工程 1.2 创建一个dll工程. 操作:a.文件->新建->项目->Win32控制台应用程序. b.输入工程名称,这里我们用dll,点击确定按钮. c.点击下一步,在"应用程序设置界面设置"勾选DLL(D)项和空项目,点击完成按钮. d.视图->解决方案资源管理器,右键点击"头文件",添加->新建项,这里咱们用dll.h 右键点击"源文件",添…