DLL в VC++

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

DLL в VC++

Сообщение Ariman » 21.04.2005 (Чт) 16:54

Блин, задолбался уже..........
В общем: пишу дллку, объявляю экспортируемую функцию:
Код: Выделить всё
extern "C" __declspec(dllexport) float __stdcall MyFunction(int, int,int ,float,float,int)

Так мало того, что несмотря на extern "C" компиллятор к имени прибавляет @24(или что-то в этом роде, без extern он вовсе генерирует громадное имя), так еще и НАПРОЧЬ игнорирует StdCall!!!!!
Смотрю TDumpом - нет stdcall перед функцией! И, разумеется, ВБ ее после этого не хочет юзать - bad caling convention!
Я уже задолбался с этими ДЛЛ...... Подскажите, что поправить, или сделайте какой-нибудь простой примерчи ДЛЛки на ВЦ, которая будет экспортировать какую-нибудь простую функцию, и кинте мне код этого примера вместе с кодом ВБ-проекта, который ее использует!
Очень прошу!!!!!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 21.04.2005 (Чт) 17:36

Ну типа вот
Вложения
SampleDLL.zip
Пример
в debug проект на ВБ.
в нем подправишь путь к длл
(66.11 Кб) Скачиваний: 33
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 21.04.2005 (Чт) 17:38

ХЎ

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 21.04.2005 (Чт) 18:01

Igor_123
ОГРОМНОЕ СПАСИБО :!: :!: :!:
Только есть 3 вопроса:
1)Такой большой размер у дллки из-за того, что ты ее компиллил в DEBUG? Или там еще что-то подключать надо????
2)Разве __declspec(dllexport) не исключает необходимость в DEF-файлах??? В Билдере было так............
3)А что, stdcall в VC по-умолчанию? Я не заметил, чтобы ты писал stdcall перед объявлением.

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 21.04.2005 (Чт) 18:11

1) да
2) Я сколько не пробовал, вот так работает без проблем
3)alt+F7 закладка С/С++ -> Category - Code Generation - Calling convention
Но это применяеться ко всему проекту

Удачи
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 21.04.2005 (Чт) 18:21

Igor_123
Еще раз спасибо!!!!!!

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 21.04.2005 (Чт) 18:46

Не за что.
Приходите ыщо!!! :D
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

Ariman
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 817
Зарегистрирован: 02.09.2003 (Вт) 16:23
Откуда: Великая наша держава, г.Москва

Сообщение Ariman » 21.04.2005 (Чт) 18:49

:shock: :shock: :shock: :shock:
ЗНАЕТЕ, ЧЕМ БЫЛ ВЫЗВАН BAD CALLING CONVENTION?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!
Я, оказывается, все делал верно! Все построчно сравнил с sampledll.dll - ВСЕ настройки совпадают, а в ВБ вываливается ошибка!!!! Я уже начал тихо фигеть...... Когда мой взгляд упал на тип данных!
Оказывается, ВБ float не принимает! или принимает, но не так! В ВЦ у меня параметры были объявлены как float, а в ВБ(за неимением другого) - как Double!
Вот он и бесился...... Пришлось сменить.......

К слову, так что - тип флоат мне не как не передать в функцию, только дабл?

Igor_123
Осторожный Баянист
Осторожный Баянист
Аватара пользователя
 
Сообщения: 1325
Зарегистрирован: 21.07.2004 (Ср) 13:00
Откуда: Днепропетровск

Сообщение Igor_123 » 21.04.2005 (Чт) 18:54

да в вб нет типа флоат, есть single попробуй его.
Водки я вам не обещаю, но погуляем хорошо.
И. Сусанин.

Аватара (с) Тёмыч

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 26.04.2005 (Вт) 23:15

Действительно, float и Single - одно и то же. double и Double - тоже, кстати :-)
Изображение

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 26.04.2005 (Вт) 23:41

Ariman не забывай byval в апи ставить, тоже серьезная ошибка
ХЎ

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 26.04.2005 (Вт) 23:47

Это ты о чем, интересно?

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

d3drm
Астролог
Астролог
Аватара пользователя
 
Сообщения: 2873
Зарегистрирован: 29.05.2002 (Ср) 23:34
Откуда: МаСКвА

Сообщение d3drm » 27.04.2005 (Ср) 0:57

xolod если ты мне, то я имею ввиду, что при вызове апи по ссылке часто вызывает сбой в работе функции. Очень часто начинающие программеры АПИ забывают ставить byval и в DLL передается такая фигня...
ХЎ

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 27.04.2005 (Ср) 11:01

Да тебе. Просто твое выражение так прозвучало, вроде "byval в API вообще нельзя ставить, ошибка это серьезная". Я и решил переспросить.

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru


Вернуться в Народный треп

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 67

    TopList