使用Makefile链接cimgui到C项目时遇链接错误求助
解决MinGW链接cimgui时的"cannot find -lcimgui.dll"错误
问题根源
你在链接选项里同时指定了-lcimgui和-lcimgui.dll,但MinGW链接器处理动态库的逻辑是:使用-l{库名}时,会自动查找lib{库名}.dll.a(动态导入库)或lib{库名}.a(静态库)。你的build目录里已经存在libcimgui.dll.a,这正是链接cimgui动态库所需的导入库,-lcimgui.dll是多余且错误的写法——链接器会尝试寻找不符合命名规范的目标文件,最终导致找不到文件的错误。
修复步骤
修改Makefile中的LINKER_FLAGS,删除多余的-lcimgui.dll,只保留-lcimgui:
LINKER_FLAGS := -lSDL2 -lopengl32 -lcimgui
完整修复后的Makefile
PROJ := proj TARGET := $(PROJ) OBJ := sub.o main.o INCLUDE_PATH := -IC:\path\to\SDL2 -IC:\path\to\cimgui LIB_PATH := -LC:\path\to\SDL2\lib -LC:\path\to\cimgui\build LINKER_FLAGS := -lSDL2 -lopengl32 -lcimgui CFLAGS := $(INCLUDE_PATH) .PHONY : build clean build : $(TARGET).exe $(TARGET).exe: $(OBJ) gcc $^ $(LIB_PATH) $(LINKER_FLAGS) -o $@ sub.o: sub.c sub.h gcc -c $(CFLAGS) $< -o $@ main.o: main.c sub.h $(CC) $(CFLAGS) $< -o $@ clean : @rm -fv *.o @rm -fv *.exe
额外注意事项
编译成功后,运行可执行文件前,需要将cimgui.dll复制到你的项目可执行文件所在目录,或者添加到系统PATH环境变量中,否则程序运行时会提示找不到动态库。
内容的提问来源于stack exchange,提问作者JerSci
相关产品推荐
相关产品推荐

