如何将C代码或32位dll编译转换为64位dll文件
编译64位DLL的方法及32位DLL转换相关问题解答
编译64位DLL的具体操作
你之前编译得到32位DLL的根本原因是当前环境调用的GCC属于32位MinGW工具链,按以下步骤操作即可编译出64位DLL:
- 卸载现有32位MinGW,安装64位版本的MinGW-w64工具链,安装过程中架构选项选择
x86_64,线程模型按需选择win32/posix即可。 - 将MinGW-w64安装路径下的bin目录添加到系统PATH环境变量,重启CMD后执行
gcc -v,确认输出的Target字段为x86_64-w64-mingw32,即代表当前GCC为64位版本。 - 执行和之前逻辑一致的编译命令即可生成64位DLL:
gcc main.c -shared -o main64.dll
如果需要同时保留32位和64位编译能力,不用切换环境变量,直接写全64位GCC的绝对路径调用即可。
32位DLL转64位DLL的可行性
完全不可行。32位和64位PE文件的指令集、内存寻址逻辑、系统调用约定、依赖库架构都存在本质差异,不存在可以直接把32位DLL无损转换为64位DLL的工具。如果需要64位版本,必须拿到对应源代码用64位编译器重新编译生成。
内容的提问来源于stack exchange,提问作者Parsa Saberi
相关产品推荐
相关产品推荐

