Я использую objcopy на windows 10, чтобы встроить мою 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
, он не компилируется, потому что somedll.o имеет значение 32 бита, даже если он был 64-битным, как в dll, поэтому моя функция LoadLibrary()
не может его загрузить.