使用__declspec(dllexport)从DLL导出函数
Exporting functions from a DLL using __declspec(dllexport)
我正在进行一个项目(VS 2012解决方案),其中包括joystic.cpp
。项目已创建为DLL,以便能够从另一个项目调用库。该应用程序通过对话框计时器以独占模式接收即时操纵手柄数据,并将其显示在对话框中。
我用宏编辑了resource.h
文件:
#ifdef LIBRARY_EXPORTS
# define LIBRARY_API __declspec(dllexport)
#else
# define LIBRARY_API __declspec(dllimport)
#endif
以便能够通过订购导出功能:
LIBRARY_API function();
但是,我应该导出程序的所有功能吗?
是否应该导出程序的所有函数?
通常,在设计库的接口时,应该只导出库的使用者所需的函数。
如果导出了每个函数,则需要对每个函数进行文档记录。但是,库使用者可能不需要许多函数。许多功能对于图书馆的实施是私有的。
更重要的是,通过导出所有函数,您将使库的未来开发更加困难。如果您想将接口更改为导出的其中一个专用函数,该怎么办?您必须引入另一个具有不同名称的函数,或者使用现有名称,从而破坏二进制向后兼容性。这两种选择都没有特别的吸引力。
从本质上讲,图书馆公共界面的表面积越大,维护任务就越大。因此,您通常的目标是提供尽可能小的公共接口,为库使用者提供所需的功能。
相关文章:
- Visual c ++,使用字符串引用/指针调用 dll 函数
- 在 Microsoft Access SQL 中调用自定义 DLL 函数时传递的内存地址无效
- 调用 "project" 函数和调用 DLL 函数之间的区别
- 代码在 msvcrt .dll函数上设置断点失败
- VB.NET DLL中的C++DLL函数复制
- 在python-ctypes中声明变量并传递给dll函数
- 从 Python 调用 Windows DLL 函数时出错
- 调用 dll 函数时"Run-Time Check Failure #0 - The value of ESP"
- 列出 C# 中的 non-.NET DLL 函数
- 基本 DLL 函数
- 如何在不可修改的源代码中使用 DLL 函数?
- 对需要双精度数组和结构作为输入C++ DLL 函数的 C# 调用
- WScript.CreateObject 在调用 C++ COM dll 函数时返回空
- 如何在 lua cpp 模块中调用托管 c++ dll 函数
- 测试C++ DLL 函数
- 从 C# GUI 将 char * 参数传递给C++ dll 函数
- 使用指针调用C++ DLL 函数
- 在C++中导入 DLL 函数
- #VALUE!在 64 位 Excel 中调用 DLL 函数 (C++) 时
- 如何从 UWP 应用调用"libheif.dll"函数