以可移植方式将类导出到 dll,而无需使用接口
Exporting classes to a dll in a portable way, without using interfaces?
我有一个关于共享库/.dlls和类导入/导出的问题。根据我经过一些研究后的理解,两种方法如下:
这是我所知道的仅有的两种方式。第一个是禁忌,因为它提供 0 可移植性。第二种,虽然方便且对于实现目的的.dll进行良好的编程设计,但当您意识到需要为每个不同的构造函数使用不同的构造函数时,它开始很烦人,只能使用 POD 类型作为参数,并且您失去了C++类的许多优点,例如重载函数和默认函数参数。
对于应该为用户提供库的.dll,例如,类的集合甚至第二种方式也变得非常不方便。所以我想知道这里的解决方案是什么?只是为每个主要编译器使用第一种方法编译不同的.dll?大型图书馆的共享库版本如何工作?例如,wxWidgets也提供了一个.dll版本。他们如何在避免接口解决方案的情况下实现.dll最终用户对类的正常使用?
为每个编译器版本提供单独 DLL 的解决方案有效。同时,它仍然不是官方功能。你永远不会知道下一个服务包是否会破坏兼容性,没有人会给你确切的编译器/链接器密钥列表,这些密钥将保持/破坏兼容性等。我听到可靠的传言说Windows8终于以正确的方式实现了这一点。
顺便说一下,Visual Studio 2012 Release Candidate 仍然可以从以下位置下载:http://msdn.microsoft.com/en-us/vstudio/bb984878.aspx。也许你应该尝试一下?
相关文章:
- C++ 多个 DLL 之间的共享接口
- 可视化 使用 C++ API 注册 COM DLL 的所有接口
- 如何从MFC DLL中获取与COM包裹的C#对象的接口
- 使用抽象接口C++ dll 边界 -标头中的智能指针>?叫删除?
- 当从一个应用程序调用时,在DLL方法中创建COM接口指针是有效的,但当从另一个应用软件调用时则无效
- 如何在C#中使用C++DLL导出的接口指针
- Visual C++ 中 DLL 的 DLL 导出和接口
- 在主应用程序中声明的 dll 中实现接口 - C++
- 使用 ATL 编译 dll,并将方法参数作为接口,但将它们作为 coclass 获取
- 运算符=不是DLL中导出的C++__接口的成员
- exe和dll与不同C/C++运行库之间的接口
- 如何在DLL库的公共接口中使用pImpl习语
- 通过围绕C++接口创建C包装器,在FORTRAN中调用C++dll文件
- 我的Java GUI与我的超酷专有dll接口.如何防止第三方与此 dll 接口
- 使用接口从 dll 导出类
- 从 DLL (C++) 获取虚拟类接口
- 从可锁定容器的DLL接口隐藏Boost::互斥
- C#对导出抽象类/接口的C++DLL函数的消耗
- std::字符串流类需要有dll接口
- 如何在VC++2015全程序优化的情况下正确地从dll中公开接口