我正在为一位客户更新DLL,由于公司政策等原因,我们决定不再与客户共享源代码。以前,我想他们拥有所有的源码并将其导入为VC++6项目。现在,他们将不得不链接到预编译的DLL。我认为,至少需要将*.lib文件与DLL一起分发,以定义DLL入口点。但是,我是否还需要分发头文件呢?如果我可以不分发它,客户该如何将DLL导入其代码中?
然而,我也需要分发头文件吗?
是的。否则,你的客户必须手动声明函数才能使用它。可以想象,这将非常容易出错并且难以调试。
你可以采用的一种替代方案是仅传递 DLL,并让客户端使用 LoadLibrary() + GetProcAddress() 动态加载它。尽管如此,你仍然需要让客户端知道 DLL 中函数的签名。
这里有更详细的示例: