Windows下Eclipse中MinGW编译共享库无法运行问题求助
问题分析与解决方案
首先明确:Windows系统下MinGW生成的共享库格式是*.dll,*.so是Linux/Unix平台的共享库格式,这是正常现象,不是问题所在。
你遇到的退出码-1,073,741,515对应Windows错误码0xC0000135,本质是程序运行时找不到依赖的DLL文件,同时还有共享库函数未正确导出的潜在问题,以下是分步解决方法:
一、修复当前项目的运行问题
1. 确保共享库函数被正确导出
MinGW默认不会自动导出DLL中的函数,需要显式声明:
修改test.h为:
#ifndef TEST_H_ #define TEST_H_ #ifdef BUILD_DLL #define EXPORT __declspec(dllexport) #else #define EXPORT __declspec(dllimport) #endif EXPORT void test_print(void); #endif /* TEST_H_ */
然后配置SharedLib项目的编译宏:
- 右键SharedLib项目 → 属性 → C/C++ Build → Settings → GCC C Compiler → Preprocessor → Defined symbols,添加
BUILD_DLL - 重新编译SharedLib项目,此时会生成
libSharedLib.dll(动态库)和libSharedLib.a(导入库,用于链接)
2. 配置Exec项目的链接依赖
除了项目引用,还要确保链接器能找到导入库:
- 右键Exec项目 → 属性 → C/C++ Build → Settings → MinGW C Linker → Libraries
- 在
Libraries(-l)中添加SharedLib - 在
Library search path(-L)中添加SharedLib项目的Binaries目录(例如D:\workplace3\SharedLib\Debug)
- 在
3. 让系统能找到DLL文件
有两种方式:
- 直接将
libSharedLib.dll复制到Exec项目的Debug目录(D:\workplace3\Exec\Debug\),与Exec.exe放在同一目录 - 将SharedLib的Binaries目录添加到系统
PATH环境变量,重启Eclipse后生效
完成以上步骤后,重新编译运行Exec项目,即可正常输出内容。
二、实现共享库被所有C项目自动引用
要让所有Eclipse的C项目无需单独配置就能使用该共享库,做全局配置:
1. 全局配置头文件路径
- 打开Eclipse → Window → Preferences → C/C++ → Build → Settings → GCC C Compiler → Includes
- 添加
test.h所在的目录(例如D:\workplace3\SharedLib)到Include paths(-I)列表
2. 全局配置库路径与链接库
- 同样在Preferences中,找到MinGW C Linker → Libraries
- 在
Libraries(-l)中添加SharedLib - 在
Library search path(-L)中添加SharedLib的Binaries目录
- 在
3. 全局配置DLL查找路径
将SharedLib的Binaries目录添加到系统PATH环境变量,这样所有运行的C程序都能自动找到该DLL。
之后新建任意C项目,直接包含test.h并调用test_print(),编译运行即可正常工作。
内容的提问来源于stack exchange,提问作者DCR
相关产品推荐
相关产品推荐

