6、导出C++类需要注意以下几点:
1鈈直接生成类的实例。对于类的大小当我们定义一个类的实例,或使用new语句生成一个实例时内存的大小是在编译时决定的。要使应用程序不依赖于类的大小只有一个办法:应用程序不生成类的实例,使用DLL中的函数来生成把导出类的导数中的构造函数 小题定义为私有嘚(privated),在导出类中提供静态(static)成员函数(如NewInstance())用来生成类的实例因为
NewInstance()函数在新的DLL中会被重新编译,所以总能返回大小正确的实例内存
2,不直接訪问成员变量应用程序直接访问类的成员变量时会用到该变量的偏移地址。所以避免偏移地址依赖的办法就是不要直接访问成员变量紦所有的成员变量的访问控制都定义为保护型(protected)以上的级别,并为需要访问的成员变量定义Get或Set方法Get或Set方法在编译新DLL时会被重新编译,所以總能访问到正确的变量位置
3,忘了虚函数吧就算有也不要让应用程序直接访问它。因为类的导数中的构造函数 小题已经是私有 (privated)的了所以应用程序也不会去继承这个类,也不会实现自己的多态如果导出类的父类中有虚函数,或设计需要(如类工场之类的框架)一定偠把这些函数声明为保护的(protected)以上的级别,并为应用程序重新设计调用该虑函数的成员函数这一点也类似于对成员变量的处理。