我遇到了同样的问题 - 对于专有应用程序a.exe,我想构建一个插件p.dll。
一个帖子建议:
$ dlltool --export-all-symbols a.exe -z a.defs
dlltool: a.exe: no symbols
但是a.exe包含一个a.lib文件。同样,没有 [有用的] 出口:
$ dlltool --export-all-symbols a.lib -z a.defs
$ cat a.defs
; dlltool --export-all-symbols -z a.defs q.lib
EXPORTS
_NULL_IMPORT_DESCRIPTOR @ 1 DATA
_IMPORT_DESCRIPTOR_a @ 2 DATA
[另请参阅使用从导入库 (.lib) 转换的库文件 (.a) 使用 gcc 构建 dll
最终,在 MinGW 邮件列表上找到提示,nm是我的解决方案:
$ echo EXPORTS >a.def
$ nm -p a.lib |egrep 'T _' |sed 's/0* T _//' >>a.def
一旦你有了这个 .def 文件,就很容易了:
$ #generate liba.a that has the callbacks for the symbols in *a.exe* (what a.lib has, too)
$ dlltool -v -l liba.a -d a.def
$ #build my plugin, linking to liba.a
$ gcc -shared p.c -L. -la -o p.dll