首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C++中构建与运行时版本无关的动态链接库?

如何在C++中构建与运行时版本无关的动态链接库?
EN

Stack Overflow用户
提问于 2011-06-02 02:29:21
回答 8查看 3K关注 0票数 13

我的产品是一个C++库,在Windows上,它是作为dll分发的。它很少使用c运行时(基本的iostream就是这样),所以我确信所有最新版本的CRT都会很好用。

因为我的客户应该使用我的dll构建他的应用程序,所以我不想强加给他任何特定的运行时版本。我希望我的dll绑定到我客户的应用程序正在使用的任何运行时库版本(我可以假设他的CRT将使用动态链接)。毕竟,这不就是动态链接的全部内容吗?这有可能吗?

编辑:将dll链接到静态运行时库也不起作用,因为这样静态运行时(来自dll)和动态运行时(来自客户端应用程序)将混合在一起,这是不好的。

编辑:我主要问的是,我如何告诉运行时加载程序将我的dll链接到应用程序所链接的任何CRT?也许是和载货单有关的东西?更广泛地说,我的问题是如何构建一个行为良好的dll,供客户构建他们自己的应用程序使用?

编辑:多亏了答案中的建议,我已经将所有对std类的引用转移到了我的头文件中的内联函数中,并将我的dll与静态运行时库链接起来。现在看来,它甚至可以在连接不同CRT版本的应用程序中工作。

EN

Stack Overflow用户

发布于 2011-06-02 02:35:21

您可以通过对I/O和任何其他可能依赖于运行时的东西使用WinAPI调用来实现这一点。

最痛苦的部分是,您可能必须覆盖全局newdelete才能独占使用WinAPI函数,因为它们很可能在内部使用malloc/free。还有许多其他痛苦的方面,我的意见是,这不值得麻烦。Here就是一篇介绍这个主题的文章。

票数 3
EN
查看全部 8 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6205960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档