Класс в DLL
У меня не получается в VC++ в DLL поместить класс так, чтобы он вообще виделся. Эта Dll-ка в компилирорванном виде не принимается вообще ни Borland Delphi, ни VB6. Я думаю, это связано с какими-то патаметрами компиляции или еще с чем-то. Если не сложно, кто-нибудь пошлите плз примерчик работающей DLL-ки (с примитивным классом). Заранее спасибо!
А ты какой модификатор использовал при описании класса? Вообще надо написать
class AFX_EXT_CLASS CClass
{
CClass();
~CClass();
};
И все функции будут экспортированы при создании DLL
Когда же ты включишь header(VC++ 7) при создании EXE они будут импортированны.
А ты какой модификатор использовал при описании класса? Вообще надо написать
class AFX_EXT_CLASS CClass
{
CClass();
~CClass();
};
И все функции будут экспортированы при создании DLL
Когда же ты включишь header(VC++ 7) при создании EXE они будут импортированны.
У меня какие-то проблемы с самим проектом, т.к. даже с Симпл Проджектом он выдает ошибку при подключении. Если не сложно, выложи сам проектик или пошли мне его на[EMAIL=dolonet@mail.ru]dolonet@mail.ru[/EMAIL].
Ой! Я не увидел... У меня ведь VC++6, а не 7. Там тоже отличия существенные. На VC++6 Есть ли у Вас пример?
В данной области существенных отличий нет, т. к. даже в help для таких примеров пишется:
Some samples, such as this one, have not been modified to reflect the changes in the Visual C++ wizards, libraries, and compiler, but still demonstrate how to complete your desired task.
Я еще забыл написать, что после компиляции DLL при компиляции exe надо в опциях проекта для linker дополнительно подключить статическую библиотеку <dllname>.lib, которая создается при компиляции DLL. А макрос AFX_EXT_CLASS, по идее, если и отсутствует в VС++6, то у него есть аналог который точно упомянут в документации по DLL.
В данной области существенных отличий нет, т. к. даже в help для таких примеров пишется:
Some samples, such as this one, have not been modified to reflect the changes in the Visual C++ wizards, libraries, and compiler, but still demonstrate how to complete your desired task.
Я еще забыл написать, что после компиляции DLL при компиляции exe надо в опциях проекта для linker дополнительно подключить статическую библиотеку <dllname>.lib, которая создается при компиляции DLL. А макрос AFX_EXT_CLASS, по идее, если и отсутствует в VС++6, то у него есть аналог который точно упомянут в документации по DLL.
AFX_EXT_CLASS раскрывается в банальные
__declspec(dllimport)
и
__declspec(dllexport)
AFX_EXT_CLASS раскрывается в банальные
__declspec(dllimport)
и
__declspec(dllexport)
А мне экспорт или импорт надо?
Вроде экспорт...
А мне экспорт или импорт надо?
Вроде экспорт...
В DLL, где определен и реализован класс - экспорт,
а там куда эта DLL подключается - импорт.
В DLL, где определен и реализован класс - экспорт,
а там куда эта DLL подключается - импорт.
Пасиба... гляну может получится...