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
|
|