Экспорт ф-ции из DLL по имени в VStudio
От: _dg  
Дата: 26.10.04 21:29
Оценка:
Подскажите пожалуйста как решить следующую задачу:
Необходимо создать чистый проект ("Win32Application: Application type = DLL", воспользовавшись стандартным wizard'ом) на VStudio (2003) и проэкспортировать функцию по имени (таким образом, чтобы ее можно было затем вызвать из другого приложения, которое загрузит эту DLL).

Проблема состоит в том, что функция экспортируется но не под тем именем которое ей даю я (т.е. если есть функция "func1" то в DLL вместо "func1" записывается что-то вроде "?func1@@XYZ")

Спасибо

27.10.04 01:53: Перенесено модератором из 'C/C++' — Павел Кузнецов
Re: Экспорт ф-ции из DLL по имени в VStudio
От: Peregrin  
Дата: 26.10.04 21:48
Оценка:
Здравствуйте, _dg, Вы писали:

_dg>Подскажите пожалуйста как решить следующую задачу:

_dg>Необходимо создать чистый проект ("Win32Application: Application type = DLL", воспользовавшись стандартным wizard'ом) на VStudio (2003) и проэкспортировать функцию по имени (таким образом, чтобы ее можно было затем вызвать из другого приложения, которое загрузит эту DLL).

_dg>Проблема состоит в том, что функция экспортируется но не под тем именем которое ей даю я (т.е. если есть функция "func1" то в DLL вместо "func1" записывается что-то вроде "?func1@@XYZ")


_dg>Спасибо


Добавь в проект .def файл с содержанием
EXPORTS
  func1

или сделай свою функцию extern "С"
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[2]: Экспорт ф-ции из DLL по имени в VStudio
От: _dg  
Дата: 27.10.04 10:28
Оценка:
P>Добавь в проект .def файл с содержанием
P>
P>EXPORTS
P>  func1
P>


Ммм... а как это сделать? Я его добавляю в список SourceFiles/HeaderFiles/ResourceFiles — эффект нулевой, файл просто игнорируется. Может его нужно как-нибудь в самом тексте подключать?

P>или сделай свою функцию extern "С"

В таком случае функция экспортируется с именем "_func1@0". Это конечно уже лучше, но все-таки не то
Re[3]: Экспорт ф-ции из DLL по имени в VStudio
От: _dg  
Дата: 27.10.04 10:46
Оценка:
P>>или сделай свою функцию extern "С"
_dg>В таком случае функция экспортируется с именем "_func1@0". Это конечно уже лучше, но все-таки не то

Забыл уточнить — функцию необходимо скомпилировать по модели stdcall, от сюда и неработоспособность extern "C"
Re[3]: Экспорт ф-ции из DLL по имени в VStudio
От: genre Россия  
Дата: 27.10.04 10:50
Оценка:
Здравствуйте, _dg, Вы писали:

P>>Добавь в проект .def файл с содержанием

P>>
P>>EXPORTS
P>>  func1
P>>


_dg>Ммм... а как это сделать? Я его добавляю в список SourceFiles/HeaderFiles/ResourceFiles — эффект нулевой, файл просто игнорируется. Может его нужно как-нибудь в самом тексте подключать?


Указать в настройках проекта Module Definition File: bla-bla.def
... << RSDN@Home 1.1.4 beta 2 >>
Re: Экспорт ф-ции из DLL по имени в VStudio
От: ironbrain  
Дата: 09.11.04 20:22
Оценка:
Здравствуйте, _dg, Вы писали:

_dg>Проблема состоит в том, что функция экспортируется но не под тем именем которое ей даю я (т.е. если есть функция "func1" то в DLL вместо "func1" записывается что-то вроде "?func1@@XYZ")


Допишите extern "C" в объявлении функции
... << RSDN@Home 1.1.3 stable >>
Re[3]: Экспорт ф-ции из DLL по имени в VStudio
От: Poirot Россия  
Дата: 10.11.04 08:03
Оценка:
Здравствуйте, _dg, Вы писали:

_dg>Ммм... а как это сделать? Я его добавляю в список SourceFiles/HeaderFiles/ResourceFiles — эффект нулевой, файл просто игнорируется. Может его нужно как-нибудь в самом тексте подключать?


P>>или сделай свою функцию extern "С"

_dg>В таком случае функция экспортируется с именем "_func1@0". Это конечно уже лучше, но все-таки не то
А если убрать __declspec(dllexport)?!?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.