c++ - 将头文件编译成 DLL

标签 c++ winapi dll header

我已经创建了一个函数库,我想从中创建一个 DLL 并创建一个导出库。创建 DLL 不是问题。

问题是,我不希望开发人员/用户查看头文件内部,因为代码没有优化,其中一些看起来很乱,即使它可以工作。

无论如何,我是否可以将头文件的内容包含在另一个 DLL 中,这样头文件就会被隐藏,或者有没有办法将头文件编译为二进制文件?

Win32,visual studio 2010,“c/c++”。

最佳答案

首先,从 header 中删除代码:只需声明函数并指定类(即其中没有代码):

//header 
void my_ignomous_function(int);
class my_ignomous_class {
public: 
     my_ignomous_class();
     ~my_ignomous_class();
     bool my_ignomous_member(my_ignomous_class &x); 
private: 
     // unfortunately, you have to give these details.  
};

如果这还不够,您可以使用 pimpl idiom :在您的类中,您使用指向用于实现的对象的指针。优点是您可以只声明实现类,而无需在 header 中添加任何细节。细节仅在实现中需要。

//header 
class my_nice_class {
public: 
     my_nice_class()
     ~my_nice_class()
     bool my_nice_member(my_nice_class &x); 
private: 
     class my_horrible_secret_class *impl; 
};

另一种方法是对你的设计进行微调,这样你就没有什么可隐藏的了;-)

关于c++ - 将头文件编译成 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32147964/

相关文章:

c++ - 资源编辑器中的dll资源: Where do they come from?

windows - 如何将第三方 Windows DLL 组织到我的应用程序文件夹中的子文件夹中?

c++ - Boost::Spirit:优化表达式解析器

c++ - 模板编程中的数据成员访问

winapi - Excel - Windows 7 任务栏进度

c - 如何设置 Win32 窗口非客户区的大小(原生)

c++ - 定时器工作不正常

C++ 将 long、short 和所有 int 转换为 uint32_t、int32_t 等等有帮助吗?

c++ - 如何从powerbuilder11.5调用win32 dll?

C++:警告不一致的 dll 链接