Как можно создавать файлы .dll с помощью NASM?

Можно ли собрать код сборки в файлы .dll с помощью ассемблера NASM? Мне это нужно, потому что я хочу связать файл .dll, содержащий код сборки, и файл .dll, содержащий код C++, и загрузить этот .dll с помощью JNI (собственный интерфейс Java), который будет вызывать функции C++, которые являются просто оболочками для сборки. функции. Компиляция кода C++ и ассемблера в два отдельных модуля .dll с вызовом «кода .dll сборки» из «кода .dll C++» также возможна.

С уважением, Бенджамин.


person Benjamin    schedule 14.04.2011    source источник


Ответы (2)


NASM просто создает объектный файл (.o/.obj), верно? Почему бы не связать это с вашей C++ DLL, указав его в качестве дополнительного ввода либо в командной строке компоновщика, либо в свойствах проекта?

person Timo Geusch    schedule 14.04.2011
comment
О! Не могу поверить, что я не подумал об этом! :O Глупый я.. в любом случае, большое спасибо :). - person Benjamin; 14.04.2011

вы можете создать dll с помощью nasm и использовать alink в качестве компоновщика. В вашем исходном коде используйте следующие строки для каждой функции в вашей dll: global myfunc

экспортировать myfunc

Вам нужно предоставить функцию _dllmain, которая вызывается при инициализации. Просто верните 1 в eax и верните 12, потому что вам нужно очистить 3 аргумента, которые здесь не используются.

Соберите с помощью -fobj (omf), затем свяжите с -dll, добавленным к параметрам pe и GUI.

person Fred    schedule 11.02.2012