gpt4 book ai didi

c++ - 在没有运行时的情况下构建 Windows C++ 库?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:26:12 27 4
gpt4 key购买 nike

我正在尝试创建一个用于 Windows/MSVC 的 C++ 库。

我的问题是,为了正确链接,我需要分发一堆不同的版本,链接到不同版本的 MSVC 的 c++ 运行时 - 单线程和多线程,调试和发布,不同的编译器版本,各种其他安全和其他选项。

我很乐意只分发两个,32 位和 64 位。

我的想法是可能对我所有的 STL 类型使用不同的新运算符(比如 mynew)和自定义分配器。创建库时,/nodefaultlib。然后,当从父项目链接进来时,要求他们将 mynew 转换为 new,并将 my STL 分配器转换为标准分配器(或他们选择的分配器之一)。我想我需要删除和其他一些功能。自然地,我会提供一个使用库的 thunking 实现示例,但这有望让每个人都省去很多麻烦。

这可能吗?有没有人试过这个?是否有在 Windows/MSVC 上创建/分发库的最佳实践?

最佳答案

您需要静态链接,作为一般答案。

关于 Chris 回答的快速说明(不想去提升,因为它大部分都很好,但是......):

不要链接到 msvcrt.dll(未版本化的);这是操作系统特定版本的 DLL,如果您链​​接到它,您的应用程序可能无法在其他版本的 Windows 上运行。据我所知,您应该始终链接到 msvcrt##.dll。 DDK 可能包含它的库,但不要链接到它,除非你真的知道你在做什么。

关于c++ - 在没有运行时的情况下构建 Windows C++ 库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/190059/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com