Приложение пишется на VC6 а dll-ка на VC7.0 При обращении к длл прога валится. Мне интересно, возможно ли в принципе реализовать такую конструкцию? потому что если собирать обе части одним компилятором, всё работает нормально
Здравствуйте, SunnyChild, Вы писали:
SC>Приложение пишется на VC6 а dll-ка на VC7.0 При обращении к длл прога валится. Мне интересно, возможно ли в принципе реализовать такую конструкцию?
да, должно работать даже если dll на delphi или Cbuilder
SC>потому что если собирать обе части одним компилятором, всё работает нормально
видимо у тебя есть ситуации, когда память выделяется в exe, а освобождается в dll или наоборот, в частном случае, когда CRT один и тот-же и используется из dll это прокатывает, во всех остальных — облом
Здравствуйте, SunnyChild, Вы писали:
SC>Приложение пишется на VC6 а dll-ка на VC7.0
На сколько я помню, DLL без разницы на чем нарисован, главное, чтобы интерфейс общения совпадал. Если у тебя экспортируются только функции, то все должно работать. Если экспортируются классы, тогда в общем случае требуется использовать один и тот же компилятор, потому что разные версии по-разному экспортируют классы.
А как DLL-ку грузишь? LoadLibrary или неявно?
... << RSDN@Home 1.1.3 stable >>
Здравствуйте, Leshi, Вы писали:
L>Здравствуйте, SunnyChild, Вы писали:
SC>>Приложение пишется на VC6 а dll-ка на VC7.0
L>На сколько я помню, DLL без разницы на чем нарисован, главное, чтобы интерфейс общения совпадал. Если у тебя экспортируются только функции, то все должно работать. Если экспортируются классы, тогда в общем случае требуется использовать один и тот же компилятор, потому что разные версии по-разному экспортируют классы.
L>А как DLL-ку грузишь? LoadLibrary или неявно?
Сорри, что не ответил сразу. А что имеется в виду под интерфейсом общения?
Используется LoadLibrary. У меня экспортируются функции, которые возвращают указатель на класс. Такая конструкция может быть совместима? В длл-ке используется STL, но наружу выведены только char* итд (это имеет в данном случае какое-либо значение?).
В принципе, я не особо обламываюсь, работаю под семёркой, а когда надо выдать новую версию, собираю длл-ку под шестёркой. Просто очень любопытно, как же всё это устроено
Здравствуйте, Odi$$ey, Вы писали:
OE>видимо у тебя есть ситуации, когда память выделяется в exe, а освобождается в dll или наоборот, в частном случае, когда CRT один и тот-же и используется из dll это прокатывает, во всех остальных — облом
А можно поподробнее? А то я не совсем знаю предмет. В каких случаях можно выделять память в dll и убивать в exe, а в каких нет? И раз уж на то пошло, что такое CRT?
Может посоветуете какие-нибудь полезные сслыки по теме?
Здравствуйте, SunnyChild, Вы писали:
L>>А как DLL-ку грузишь? LoadLibrary или неявно?
SC>А что имеется в виду под интерфейсом общения?
Я не знать как это есть по-русски <читать с ностранным акцентом>. Я имею в виду, что представление классов (объектов классов) в разных компиляторах разное. И вполне вероятно, что при экспорте могут возникнуть недопонимания.
SC>Используется LoadLibrary.
Валится именно на LoadLibrary? Или на чем-то другом?
SC>У меня экспортируются функции, которые возвращают указатель на класс. Такая конструкция может быть совместима?
Такая конструкция
может быть совместима, а может и не быть. Скорее всего именно из-за нее валится.
SC>В длл-ке используется STL, но наружу выведены только char* итд (это имеет в данном случае какое-либо значение?).
STL внутри и char* наружу должно жить, имхо.
... << RSDN@Home 1.1.3 stable >>
SunnyChild,
> Приложение пишется на VC6 а dll-ка на VC7.0 При обращении к длл прога валится. Мне интересно, возможно ли в принципе реализовать такую конструкцию?
В принципе — возможно. Вопрос в используемых возможностях, и на чем именно "валится".
Posted via RSDN NNTP Server 2.0 alpha
Легче одурачить людей, чем убедить их в том, что они одурачены. — Марк Твен