我在windows10上使用objcopy将我的dll嵌入到exe中并加载它。它运行良好的32位编译32位二进制dll文件,因为我没有得到错误加载我的dll。
objcopy --prefix-symbol=_ --input-target binary --output-target pe-i386 --binary-architecture i386 somedll.dll somedll.o如何设置objcopy参数以获取64位二进制对象文件?如果objcopy不能做到这一点,有没有其他选择呢?当我将我的dll编译为64位时,它不会加载,如果我试图用64位的目标文件编译可执行文件,它会返回错误,指出我的目标文件与64位编译不兼容。
所以比如说在gcc编译的时候,我要做的是
gcc -m32 Myfile.c somedll.o -o output.exe如果我删除了-m32,它不能编译,因为有些edll.o被设置为32位,即使它是64位的,这就是为什么我的LoadLibrary()函数不能加载它。
发布于 2019-06-16 03:33:10
我能够用这个论点得到最好的结果。
objcopy --prefix-symbol=_ --input-target binary --output-target pe-x86-64 --binary-architecture i386:x86-64 some64.dll some64.o将pe-i386转换为pe-x86-64,将i386转换为i386:x86-64,使我能够将64位动态链接库嵌入到可执行文件中,而不会遇到任何二进制兼容性问题。它在windows上运行得很好。
https://stackoverflow.com/questions/56611153
复制相似问题