3.) Хотел экспортировать переменные CString. Ноль эмоций от VC. Много думал - экспортнул CAtlString. Может есть более красивое решение?
в общем, как оно и положено dll экспортируют классы. Классы моей бизнс-логики. В классах часто приходиться работать со строками. Само собой - уж коли я хочу работать с MFC то и строки мне нравяться CString. При работе с ними - ошибки типа fatal error.
Если заменить весь CString на CAtlString - компилиться без проблем.
То есть проблему то я конечно обошел, но может я что не так делал?
Короче кусок кода из global.dll:
global.h
#pragma once
#pragma warning(disable: 4251)
#include <string>
#include <list>
#include <map>
#include <vector>
#include <atlstr.h>
#define EXPORTMODEGLOBAL __declspec(dllexport)
#define EXPORTMODEOBJ __declspec(dllexport)
typedef EXPORTMODEGLOBAL CAtlStringW IEString;
class EXPORTMODEGLOBAL IEObject
{
protected:
int Type; //тип объекта
DWORD IDC; //идентификационный номер, нужен при сборке в файл
public:
IEObject* Parent; //указатель на контейнер, где он живет
//конструторы, деструкторы
IEObject(void);
IEObject(const IEObject& Obj);
IEObject operator=(const IEObject& Object);
virtual ~IEObject(void);
//методы
void GetType(int& Type) const;
//достать родительскую систему
static IEObject* GetParentSystem(IEObject* Parent);
//достать самую высокую систему
static IEObject* GetSystemHigh(IEObject* Parent);
//достать критерий, если система с оъектом - характеризующая
static IEObject* GetCritHigh(IEObject* Parent);
//установить идентификац. номер
void SetIDC(const DWORD& i);
//достать идентификац. номер
DWORD GetIDC(void) const;
};
//абстрактный класс поименнованного объекта
//имеет коментарий и свойство выбранности
class EXPORTMODEGLOBAL IEName: public IEObject
{
protected:
IEString Name; //имя
IEString Coment; //комментарий
bool Select; //свойство выбранности
public:
//конструкторы, деструторы
IEName(void);
IEName(const IEName& Name);
IEName operator=(const IEName& Name);
virtual ~IEName(void);
//методы
void SetName(const IEString& Name);
void GetName(IEString& Name) const;
void SetComment(const IEString& Comment);
void GetComment(IEString& Comment) const;
void SetSelect(const bool& Select);
bool CheckSelect(void) const;
};
Тот самый IEString - на нем вся прога пашет.