加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

在没有运行时的情况下构建windows c库?

发布时间:2020-12-14 04:00:59 所属栏目:Windows 来源:网络整理
导读:我正在尝试创建一个用于 Windows / MSVC的c库. 我的问题是,似乎为了正确链接,我需要分发一堆不同的版本,链接到不同版本的MSVC的c运行时 – 单线程和多线程,调试和发布,不同的编译器版本,各种其他安全性和其他选择. 我喜欢分发两个,32位和64位. 我的想法是为
我正在尝试创建一个用于 Windows / MSVC的c库.

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

我喜欢分发两个,32位和64位.

我的想法是为我的所有STL类型使用不同的新运算符(比如,mynew)和自定义分配器.创建lib时,/ nodefaultlib.然后,当从父项目链接时,要求他们将mynew转换为new,并将我的stl分配器转换为标准的(或者他们选择的一个).我想我需要删除,以及其他一些功能.当然,我会提供一个示例的thunking实现与库,但这将有希望为每个人节省很多头痛.

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

解决方法

你想要静态链接作为一般答案.

关于克里斯回答的快速说明(不想去除助力因为它主要是好的,但是……):

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读