当我试图使用这些文件( ld: 9 duplicate symbols for architecture x86_64 main.c、subhook_unix.o、subhook_x86.o、subhook.o )在MacOS上创建一个dylib时,我收到了最后一个错误。
下面是我使用的命令: g++ -dynamiclib -fPIC -o Gexecute.dylib subhook_unix.o subhook_x86.o subhook.o
下面是返回的错误。
subhook_x86.o
subhook.o
duplicate symbol '_subhook_read_dst' in:
subhook_x86.o
subhook.o
duplicate symbol '_subhook_unprotect' in:
subhook_unix.o
subhook.o
duplicate symbol '_subhook_disasm' in:
subhook_x86.o
subhook.o
duplicate symbol '_subhook_install' in:
subhook_x86.o
subhook.o
duplicate symbol '_subhook_remove' in:
subhook_x86.o
subhook.o
duplicate symbol '_subhook_free' in:
subhook_x86.o
subhook.o
duplicate symbol '_subhook_free_code' in:
subhook_unix.o
subhook.o
duplicate symbol '_subhook_alloc_code' in:
subhook_unix.o
subhook.o我预测我使用了不正确的命令,或者.o文件中的代码有错误。
发布于 2022-07-26 14:00:47
看起来,您链接了同一个库的三个版本,当然,它们之间有相同的函数或变量名。试着把其中一个连接起来。
因为林克说:
重复符号
“符号”指函数名或变量名,所以“重复符号”意味着链接的文件中有许多相同的名称。通过错误日志,这些名称看起来像函数名,而这些函数总是出现在另外两个.o文件中,因此我得出结论,这三个lib是相同的,但版本不同。
https://stackoverflow.com/questions/73124582
复制相似问题