|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
14.07.2009, 01:05 | #1 |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
DLL
есть некая длл в ней пару функций
загружаю ее Код:
Код:
?MyFunc@@YAPAV@@XZ , то все работает... Почему так? И что я забыл сделать, чтобы хватало краткой записи? |
14.07.2009, 01:09 | #2 |
Участник клуба
Регистрация: 06.04.2009
Сообщений: 1,524
|
Мне кажется у Вас чего то не хватает
Явное связывание dll с программой |
14.07.2009, 02:29 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
наверно потому что именно полное имя функции и нужно указать
а не её отрывок Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
14.07.2009, 11:09 | #4 | |
Участник клуба
Регистрация: 18.10.2008
Сообщений: 1,409
|
Цитата:
ну привет, я что должен постоянно спрашивать у линкера как он мою функцию обзывает при линковке? |
|
14.07.2009, 11:46 | #5 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
14.07.2009, 12:08 | #6 |
Форумчанин
Регистрация: 29.05.2009
Сообщений: 320
|
Есть такое забавное слово замангление - компиляторы не переносят некоторых символов и вынуждены их менять, но главное - имена функций искажаются из-за их перегрузки, нужно как-то компилятору различать функции названные одинаково, но на самом деле разные (в стд. библиотеках в т.ч.).
Про пример : а как вы экспортируете? так: Код:
Последний раз редактировалось BaronTreep; 14.07.2009 в 12:11. |
14.07.2009, 12:13 | #7 | |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
?MyFunc@@YAPAV@@XZ для этого пользуемся декодированием имен.
extern "C" ____stdcall __declspec(dllexport ) int MyFunc(); -вот так все должно работать. Цитата:
Последний раз редактировалось profi; 14.07.2009 в 12:18. |
|
14.07.2009, 12:35 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
ТОлько что создал простенький проект: Код:
I'm learning to live...
Последний раз редактировалось Stilet; 14.07.2009 в 12:43. |
|
14.07.2009, 12:38 | #9 |
я получил эту роль
Старожил
Регистрация: 25.05.2007
Сообщений: 3,694
|
MyFunc@@YAPAV@@XZ указывает на тип и количество передаваемых параметров, в сишных библиотеках такое, но обычно это имена функций для "внутреннего" использования, вот и получается ужас типа
soap_delete_std__string@@YAXPAUsoap @@PAV?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@@Z
пыщь
|
14.07.2009, 12:40 | #10 |
Участник клуба Подтвердите свой е-майл
Регистрация: 19.11.2007
Сообщений: 1,022
|
А в Делфи с этим все в порядке, разработчики позаботились за имена функций. Советую всем вот эту статью.
Последний раз редактировалось profi; 14.07.2009 в 12:49. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
dll | sergei64_89 | Общие вопросы .NET | 1 | 02.08.2008 19:52 |
DLL | MusicMan | Помощь студентам | 3 | 21.04.2008 21:30 |
DLL | michaellos | Win Api | 1 | 16.11.2007 21:03 |
.DLL | ZhekON | Общие вопросы Delphi | 3 | 20.05.2007 21:02 |
DLL | Shico | Win Api | 1 | 16.04.2007 16:24 |