Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование DLL на асме

3.8K
13 января 2004 года
ILSOR
25 / / 03.12.2003
Скажите пожалуйста, в чем дело:

Я пишу ДЛЛ на асме, вызываю её из проги на асме-
(статически) - ВСЕ НОРМАЛЬНО.

Энтот самый ДЛЛ вызываю из Builder'ской или
MSVC++ программы - ЛИНКЕР НЕ НАХОДИТ
НУЖНОЙ ФУНКЦИИ.

Я использовал простое имя ф-ции :
ScanMem proto :dword,:dword,:dword,:dword,:dword

Я читал, что имя нужно изменять в соотв. с
сигнатурами компиляторов, но не нашёл точного
руководства...

ПосоветУйте, где можно найти документацию по
сигнатурам компиляторов...
3.0K
13 января 2004 года
Vein
17 / / 02.04.2003
Цитата:
Originally posted by ILSOR
Посоветуйте, где можно найти документацию по
сигнатурам компиляторов...



Большой прибольшой совет, пепиши библиотеку на Flat Assembler и не мучайся с экспортами/импортами. В нем все настолько просто реализовано.. Вот даже ссылка на последнюю версию http://www.flatassembler.net/fasmw150.zip
И вообще сие произведение - есть мега удобный компилятор.

401
14 января 2004 года
Br@in RIPper
289 / / 15.02.2003
Цитата:
Originally posted by ILSOR
Скажите пожалуйста, в чем дело:

Я пишу ДЛЛ на асме, вызываю её из проги на асме-
(статически) - ВСЕ НОРМАЛЬНО.

Энтот самый ДЛЛ вызываю из Builder'ской или
MSVC++ программы - ЛИНКЕР НЕ НАХОДИТ
НУЖНОЙ ФУНКЦИИ.

Я использовал простое имя ф-ции :
ScanMem proto :dword,:dword,:dword,:dword,:dword

Я читал, что имя нужно изменять в соотв. с
сигнатурами компиляторов, но не нашёл точного
руководства...

ПосоветУйте, где можно найти документацию по
сигнатурам компиляторов...



посмотри с помощью Dependency Walker (или подобной программой) как называются функции, которые экспортирует твоя библиотека. Может быть ассемблерский компилятор как-то декорирует имена.

Если все правильно, то декорировать может сам C++ компилятор. Если функции типа _cdecl, то отключить декорирование можно при описании прототипа - extern "C". Если _stdcall - то (по крайней мере в MSVC++) придется в конец каждой функции добавлять @ParamListBytes, где ParamListBytes - число байт параметров

3.8K
22 января 2004 года
ILSOR
25 / / 03.12.2003
Уфф... Лучше юзить inline ассемблер ...
1.8K
22 января 2004 года
gwg605
76 / / 06.03.2003
Цитата:
Originally posted by ILSOR
Уфф... Лучше юзить inline ассемблер ...


Неплохо, но...

Покажи лучше как у тебя хидер файл с декларацией этих имен в сях, и как они называются в асме.
Тогда скорее всего точно можно будет сказать в чем причина.

3.8K
14 февраля 2004 года
ILSOR
25 / / 03.12.2003
Спасибо, я понял в чём дело!
Я делаю пустые ф-ции с нужными параметрами в MSVC DLL и сморю в DependencyWalkere...

Потом делаю такие имена ф-ций и в ASM DLL -

ВРОДЕ НЕПЛОХО!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог