Я использую 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()
не может его загрузить.