文章目錄
mingw庫在VS下的使用
LDFLAGS += -static-libgcc -static-libstdc++
LDFLAGS += -lstdc++ -lpthread
LDFLAGS += -Wl,--out-implib,xxx.lib,--output-def,xxx.def
$(CXX) $(CXXFLAGS) $^ -o [email protected] $(LDFLAGS)
通過上述Makefile可以在mingw下生成dll和對應的lib、def文件,且沒有任何mingw庫的依賴;
單獨在VS下鏈接運行也是OK的,但一旦和其它mingw編譯的庫同時使用,鏈接時沒問題,運行時卻會跳出無法定位函數的錯誤提示框;
解決方案:
使用windows命令行下的lib命令,根據def文件重新導出lib文件,重新鏈接,運行正常;
具體導致原因未知,需要研究lib導入庫原理,網上對其原理解釋很少,《程序員的自我修養》動態庫的導入、裝載、運行一章中或可以找到答案;