Здравствуйте, Аноним, Вы писали:
А>В таком случае еще пара вопросов — .exe собирается? Работает нормально? Если да, то что вас беспокоит?
exe собирается, работает нормально, вроде как все хорошо, но ведь так же быть вроде не должно? Откуда вместе с exe еще и lib берется?
Re[5]: Вместе с exe создается lib
От:
Аноним
Дата:
24.03.09 16:20
Оценка:
А>>В таком случае еще пара вопросов — .exe собирается? Работает нормально? Если да, то что вас беспокоит? S>exe собирается, работает нормально, вроде как все хорошо, но ведь так же быть вроде не должно? Откуда вместе с exe еще и lib берется?
Почему бы и нет? .exe это такой же PE файл как и .dll и тоже может иметь экспортные символы на которые могут линковаться вгружаемые в него длл.
S>должна быть только в dll (она экспортирует), тогда App увидит __declspec(dllimport) и libы не появится.
Почти как собака — понимать это понимаю, а как применить не знаю.
Т.е. чтобы класс в dll увидел, что такое _Export, нужно включить файл с описанием _Export в заголовок файла объявлением класса. Когда заголовок с классом включаю в ехе, автоматически включается и #define FOO_DLL с описанием _Export. Пробовал добавить в ехе след. строчки, но ничего не изменилось
// app.cpp#ifdef FOO_DLL
#undef FOO_DLL
#endif
#include"foo.h"// end of app.cpp
// foo.cpp#include"foo.h"// end of foo.cpp
// foo.h#define FOO_DLL
#ifdef FOO_DLL
#define _Export __declspec(dllexport)
#else
#define _Export __declspec(dllimport)
#endif
class _Export Foo
{
//...
}
// end of foo.h
должно быть:
// app.cpp#include"foo.h"// end of app.cpp
// foo.cpp#define FOO_DLL
#include"foo.h"// end of foo.cpp
// foo.h#ifdef FOO_DLL
#define _Export __declspec(dllexport)
#else
#define _Export __declspec(dllimport)
#endif
class _Export Foo
{
//...
}
// end of foo.h