Перейти к содержанию

[Help] Линковка ASM файла и C++ проекта x64


Рекомендуемые сообщения

в x86 проекте я писал так:

__declspec(naked) void _DllMain() { _asm { jmp [xinput1_3.DllMain] } }

при переходе на x64 проект, inline ассемблер отпадает.

Решил поступить так: подключил к проекту ASM файл, подключил masm...

 

В файле ASM пишу:

.code_DllMain procjmp xinput1_3.DllMainret_DllMain endp

В С++ файле:

extern "C" int _DllMain();...xinput1_3.DllMain = GetProcAddress(xinput1_3.dll, "DllMain");

При компилировании ругается на:

jmp xinput1_3.DllMain

Конечно будет ругаться, это понятно, но вот как правильно написать?

Изменено пользователем elvis66666
Ссылка на комментарий
Поделиться на другие сайты

Microsoft Visual C++ Compiler x64 не поддерживает inline вставки ASM. Воспользуйся компилятором от Intel.

я вкурсе что не поддерживает. Тут вопрос в том как заменить строку на inline в x64. Я привел пример, как я пытался...

Подскажи статекуй, как подключить компилятор от интел к vs?

__declspec(naked) void _DllMain() { _asm { jmp [xinput1_3.DllMain] } }

возможно как-то можно написать на AsmJit?

Compiler c;	c.newFunction(CALL_CONV_DEFAULT, FunctionBuilder0<Void>());	c.getFunction()->setHint(FUNCTION_HINT_NAKED, true); //Чистая функция	с.jmp(myfoo) //И как сюда вставить адресс функции? как написано-ругается	c.ret();c.endFunction();

Microsoft Visual C++ Compiler x64 не поддерживает inline вставки ASM. Воспользуйся компилятором от Intel.

Огромное тебе спасибо!

Главное взять в руки лопату и задать верное направление!)

 

Все получилось)

Изменено пользователем elvis66666
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.