我尝试使用i686-w64-mingw32
交叉构建工具链构建一个 win32 静态库。
mylib.lib
我通过 Makefile构建了目标文件和文件:
$(program_RELEASE_NAME_WIN_STATIC): $(RELEASE_OBJS_WIN32_STATIC)
i686-w64-mingw32-gcc-ar rcs $(BUILD_DIR_WIN32)/static/$@ $^
$(BUILD_DIR_WIN32)/static/%.o: %.c $(HEADERS)
$(RELEASE_LINK_WIN32.c) $< -c -o $@
这给了我静态库mylib.lib
。在 linux 端检查这个,nm
我可以看到所有的组成目标文件和它们包含的函数
不,当我mylib.lib
在 Windows 10 VM 上检查时,即
DUMPBIN /EXPORTS mylib.lib
我得到:
Microsoft (R) COFF/PE Dumper Version 9.00.30729.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file mylib.lib
File Type: LIBRARY
Summary
C .bss
C .data
6AC .drectve
5EAC .rdata
444 .rdata$zzz
29900 .text
38 .text.unlikely
没有任何功能被导出。
在相关的头文件中,我标记了要导出的函数__declspec(dllexport)
这在我生成 .dll 时效果很好,即我标记为导出的函数是 .dll 文件中唯一可见的函数
但是对于静态库等价物,什么都没有被导出?
您如何使函数在 win32 .lib 文件中可见?