繁体   English   中英

DLL中的全局指针

[英]Global pointer in DLL

我有一个C ++ DLL项目,它包含一个dllmain源文件,一个只包含DLL函数声明的头文件,一个包含完整函数定义的cpp文件,以及一个指向不同类实例的全局指针。 通过调用Init函数初始化此指针,并且所有其余DLL函数都使用指针并返回错误(如果尚未分配)。

除了依赖用户在完成DLL时调用特定函数(这听起来像一个可怕的想法),我如何确保cpp文件中的全局指针被释放?

谢谢。

除了依赖用户在完成DLL时调用特定函数(这听起来像一个可怕的想法)

考虑到你已经有一个Init函数,有一个匹配的Free函数是有道理的。

你怎么知道用户何时完成了库? 您可以等到卸载DLL(请参阅DllMain ),但到那时该过程可能无论如何都要结束。

我想最好的解决方案是完全避免使用全局指针。 创建一个包含其他类和您的方法的实例的类,并让用户自己创建一个实例(构造函数替换您的Init和析构函数替换您的Free )。

当DLL被关闭,将有一个通话DllMain用的参数DLL_PROCESS_DETACH ; 你可以放置代码来释放你的全局。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM