当前位置:首页 > Windows程序 > 正文

使用code::blocks编译windows的dll链接库

2024-03-31 Windows程序

因为机子上没有安装Visual Studio,所以找到了一种通过code::blocks编译dll的方式,踩到的坑是code::blocks默认的compiler是32位的,这样编译出的dll也是32位的,,编译64位的需要借助MinGW-w64的toolchain。

为code::blocks配置外部MinGW-w64编译器可以参考Compile 64-bit under windows with MinGW-w64。

使用code::blocks创建一个dll的工程,如下图:

技术图片

go和next到下一步:

技术图片

选择我们上面配置的编译器:

技术图片

Finsh完成,此时已经建好main.h和main.cpp文件,这里我实现了一个add函数的dll库,代码如下:

#ifndef __MAIN_H__ #define __MAIN_H__ #include <windows.h> /* To use this exported function of dll, include this header * in your project. */ #ifdef BUILD_DLL #define DLL_EXPORT __declspec(dllexport) #else #define DLL_EXPORT __declspec(dllimport) #endif #ifdef __cplusplus extern "C" { #endif int DLL_EXPORT add(int a, int b); #ifdef __cplusplus } #endif #endif // __MAIN_H__

main.cpp

// a sample exported function int DLL_EXPORT add(int a, int b) { return a + b; } extern "C" DLL_EXPORT BOOL APIENTRY DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) { switch (fdwReason) { case DLL_PROCESS_ATTACH: // attach to process // return FALSE to fail DLL load break; case DLL_PROCESS_DETACH: // detach from process break; case DLL_THREAD_ATTACH: // attach to thread break; case DLL_THREAD_DETACH: // detach from thread break; } return TRUE; // succesful }

build之后就可以生成我们想要的dll库。这里刚开始没发现compiler位数问题,编译出的是32位的dll,在x86_64平台上用会报错,通过使用Cygwin命令行仿真工具的file命令可以查看dll的位数,这个是比较简单的判断dll位数的方式。

这里在安装MingGW-w64 toolchain时也遇到一个问题,就是使用上述链接提供的MinGW下载链接下载的mingw-w64-installer.exe安装时会报"cannot download repository.list"的错误,所以又找了下发现这个错误还挺多人碰到过,官方没有修复而是给出编译好的版本,可以在这里下载,下载完解压出来就可以使用了。

使用code::blocks编译windows的dll链接库

标签:

原文地址:https://www.cnblogs.com/glensblog/p/10412806.html

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/47757.html

Jm-杰米博客Jamie
草根站长的技术交流乐园!IT不会不要紧快来好好学习吧!
  • 20786文章总数
  • 7494607访问次数
  • 建站天数
  • 友情链接