C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
CBuilder + DLL из Visual Studio, странности
Tertium
Отправлено: 15.03.2007, 17:07


Машинист паровоза

Группа: Почетный участник
Сообщений: 192



При подключении к билдеру дллки, сделанной в вижл студии во первых: если на компе не стоит вижл студия — при попытке LoadLibrary ошибка 14001
во вторых: када таки студия стоит, через GetProcAddress беру в билдере функцию, указатель не нулевой, но ф-ция не выполняется! (в ней выскакивает запись на диск) Такое впечатление, что вызывается вообще непонятно что, но ошибок вроде как нет

Ктонть вообще использовал такую связку: CBuilder + DLL из Visual Studio? Может с такими проблемами сталкивались?

Кстати раз от раза то работает то не работает вызов. вообще не понять... Ну то есть, поставил в одном месте мессаджбокс, чтото там перекомпилил и завелось, потом опять изменения в коде — и кирдык. Дебаг вообще не работает. Релиз вот пытается но через раз.

Коллин конвершн — stdcall


Отредактировано Tertium — 15.03.2007, 18:37
Admin
Отправлено: 15.03.2007, 19:55


Владимир

Группа: Администратор
Сообщений: 1190



Может coff2omf ?
Посмотрите еще:
https://rxlib.ru/forums/index.php?ac...t=ST&f=3&t=7195
AVC
Отправлено: 16.03.2007, 09:17


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Ктонть вообще использовал такую связку: CBuilder + DLL из Visual Studio? Может с такими проблемами сталкивались?

Могу ошибаться, но мне помнится что у VS по умолчанию другой способ работы с функциями + другой распределитель памяти.

Пытался подключить, но плюнул из-за возникших проблем. Правда стоит отметить, что пытался подключить через VS dll к билдеру com объект Windowless RichEdit, который работал в VS а в билдере нет.
Asher
Отправлено: 16.03.2007, 09:19


Мастер участка

Группа: Модератор
Сообщений: 550



Привет.

Я использовал связку CBuilder + DLL из Visual Studio, но так можно делать только если DLL откомпилены как Release
При этом я использовал __cdecl, передавал только тривиальные типы и указатели на свои объекты, для которых точно знал выравнивание (они были оборнуты pragma pack)
CODE

#pragma pack(push,1)
class...
{
};
#pragma pack(pop)

Я выравнивал побайтно (1), но обычно используют что-то вроде 16

Вернуться в Вопросы программирования в C++Builder