Уже немного поздно, но, возможно, кто-то еще может найти полезную эту подсказку.
Кстати, я не гуру с ++ ...
В моем решении у меня есть 3 проекта. Один - это проект DLL, остальные - два проекта приложения Win32, ссылающиеся на проект DLL.
Обычно, когда ваша dll собрана, у вас также есть сгенерированный файл (.exp, .lib) также для проектов NON dll. Это может произойти при включении файла .h проекта dll в проект приложения, в котором содержится класс, помеченный символом __declspec (dllexport).
Чтобы компоновщик не думал, что вы пытаетесь включить некоторые файлы .h для «экспорта», используйте условное выражение для определения макроса _declspec.
Пример:
#if defined(_DO_NOT_EXPORT)
#define DllExport
#else
#define DllExport __declspec(dllexport)
#endif
Хорошо, допустим, у вас есть MyClass.h в вашем проекте DLL.
в вашем .h файле, который вы могли бы теперь иметь:
class DllExport MyClass {
...
}
Если вы хотите включить этот файл .h в проект NON dll, вам просто нужно определить условие _DO_NOT_EXPORT
#define _DO_NOT_EXPORT
#include "MyClass.h"