如何在Windows平台编译生成32位NLopt库DLL文件?
解决MSYS2下MinGW编译NLopt 32位DLL的问题
- 必须使用MinGW32终端开展操作,不要用MSYS2终端或MinGW64终端,终端环境直接决定默认工具链的位数。
- 在MinGW32终端内安装32位完整工具链及CMake:
pacman -S --needed base-devel mingw-w64-i686-toolchain mingw-w64-i686-cmake - 清理源码目录的旧构建缓存:删除源码文件夹下的
CMakeCache.txt文件和build目录(如果存在),避免64位配置残留干扰编译。 - 进入NLopt源码目录,执行32位专属的CMake配置和编译:
cmake -G "MSYS Makefiles" -DCMAKE_C_COMPILER=i686-w64-mingw32-gcc -DCMAKE_CXX_COMPILER=i686-w64-mingw32-g++ . make
原理说明:之前生成64位DLL是因为终端环境默认调用了64位工具链,即使安装了32位工具链,若不指定编译器或用错终端,CMake仍会沿用之前的配置或默认64位工具。通过明确指定32位编译器路径,可强制CMake生成32位目标文件。
内容的提问来源于stack exchange,提问作者Rolf Fankhauser
相关产品推荐
相关产品推荐

