我现在用MSVC编译
我想使链接库(LIB,DLL)其中个独立的mvsvc版本..
是否有可能使独立的库?
我现在用MSVC编译
我想使链接库(LIB,DLL)其中个独立的mvsvc版本..
是否有可能使独立的库?
静态库 - 没有。 DLL的 - 是的,当公共接口适当地设计。
通常有两种方法可以实现与一个DLL:
该DLL导出一些形成一个C风格的API,类似于Windows API函数。 这些功能使用其签名唯一的原始类型,并且数组和结构体(无C ++类)。 目的是通过手柄(参见表示HWND
或HDC
)与用于操纵这些句柄的一组功能。
该DLL是一个COM服务器(或至少一个出口COM状界面)。 基本上,一个工厂函数(在COM, DllGetClassObject
),其制成品的指针一个抽象类,没有数据成员和所有成员函数纯虚(通常被称为接口)。 所有访问是通过调用这些接口(其可以进而制造其他的接口指针)的方法。
另外你要注意考虑的是资源管理 - 尤其是,但不限于,内存管理。 你不能假设内存malloc
在DLL ED可能是free
的客户端d,反之亦然。 你必须确保资源分配/释放不穿过模块的边界。 这可能是因为该DLL从未分配内存,客户端需要释放; 或者说,DLL导出客户端应该调用释放内存,该DLL分配的特殊功能; 或该DLL使用由操作系统(例如所提供的设施CoTaskMemAlloc
/ CoTaskMemFree
在COM)。