Использование DLL на асме
Я пишу ДЛЛ на асме, вызываю её из проги на асме-
(статически) - ВСЕ НОРМАЛЬНО.
Энтот самый ДЛЛ вызываю из Builder'ской или
MSVC++ программы - ЛИНКЕР НЕ НАХОДИТ
НУЖНОЙ ФУНКЦИИ.
Я использовал простое имя ф-ции :
ScanMem proto :dword,:dword,:dword,:dword,:dword
Я читал, что имя нужно изменять в соотв. с
сигнатурами компиляторов, но не нашёл точного
руководства...
ПосоветУйте, где можно найти документацию по
сигнатурам компиляторов...
Посоветуйте, где можно найти документацию по
сигнатурам компиляторов...
Большой прибольшой совет, пепиши библиотеку на Flat Assembler и не мучайся с экспортами/импортами. В нем все настолько просто реализовано.. Вот даже ссылка на последнюю версию http://www.flatassembler.net/fasmw150.zip
И вообще сие произведение - есть мега удобный компилятор.
Скажите пожалуйста, в чем дело:
Я пишу ДЛЛ на асме, вызываю её из проги на асме-
(статически) - ВСЕ НОРМАЛЬНО.
Энтот самый ДЛЛ вызываю из Builder'ской или
MSVC++ программы - ЛИНКЕР НЕ НАХОДИТ
НУЖНОЙ ФУНКЦИИ.
Я использовал простое имя ф-ции :
ScanMem proto :dword,:dword,:dword,:dword,:dword
Я читал, что имя нужно изменять в соотв. с
сигнатурами компиляторов, но не нашёл точного
руководства...
ПосоветУйте, где можно найти документацию по
сигнатурам компиляторов...
посмотри с помощью Dependency Walker (или подобной программой) как называются функции, которые экспортирует твоя библиотека. Может быть ассемблерский компилятор как-то декорирует имена.
Если все правильно, то декорировать может сам C++ компилятор. Если функции типа _cdecl, то отключить декорирование можно при описании прототипа - extern "C". Если _stdcall - то (по крайней мере в MSVC++) придется в конец каждой функции добавлять @ParamListBytes, где ParamListBytes - число байт параметров
Уфф... Лучше юзить inline ассемблер ...
Неплохо, но...
Покажи лучше как у тебя хидер файл с декларацией этих имен в сях, и как они называются в асме.
Тогда скорее всего точно можно будет сказать в чем причина.
Я делаю пустые ф-ции с нужными параметрами в MSVC DLL и сморю в DependencyWalkere...
Потом делаю такие имена ф-ций и в ASM DLL -
ВРОДЕ НЕПЛОХО!