Перейти к содержанию
Авторизация  
elvis66666

[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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
В данном топике никто не постил уже 4 месяца. Пости здесь только если твой вопрос точно совпадает с темой данного топика.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Предпросмотр
Авторизация  

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

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

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