我有一个正在构建的库,它的目标是链接到主解决方案的 DLL。
这个新的 DLL 相当复杂,我想利用 C++11 的特性,而链接它的程序肯定不会。事实上,主程序目前是使用 VS2008 和 VS2010“干净”构建的(我认为 GCC 4.3 for linux?)。
我的建议:
使用 VS2012 作为 IDE,使用 Intel C++ Compiler 2013 编译为 .dll/.so - 对于 linux - 据我了解,这基本上是机器形式(如 .exe)。
虽然我熟悉使用 C++ 解决问题,但我对编译/链接等基础知识并不流利。因此,我想问问社区是否
- 这个有可能
- 如果可能的话,它有多容易(就像我描述的那样简单?)/在此过程中我会遇到哪些陷阱或问题(是否值得)?
我预计的关注领域:
- 运行时库——我希望这会成为阻碍这项工作的因素。我对它们/它们如何工作一无所知,除了它们可能是一个问题。
- 标准库实现差异 - 是否归结为 DLL 形式是否重要?
- 线程冲突 - dll 线程和主程序线程从不修改相同的数据,实际上主程序的线程之一将调用 DLL 函数。
奖励:虽然以上是我希望采用的路线,但我理想情况下希望将此代码打开以进行智能感知、一般查看等(本质上是让它成为主要解决方案中的一个项目)。有没有办法指定不同的运行时库/编译器?这可以做到吗?
编辑:这个奖励部分的主要原因是消除如果主程序和这个库是分开构建的,就会出现必要的“版本控制”冲突。
注意:我不是为了更新而使用 C++11 - 强类型枚举和跨平台线程代码将为库带来巨大的好处。