Musa.Runtime - 通用 C++ 运行时库
Musa.Runtime 是以 Musa.Core 作为底层支持的微软 MSVC 运行时库,是 ucxxrt 的新架构的实现。
它可以让内核开发者拥有和应用开发者近似的 C++ 开发体验。
- 支持 x64、
ARM64(实验性) - 支持 New/Delete
- 支持 C++ Exception (/EHa、
/EHsc) (IRQL <= APC_LEVEL) - 支持 Static Objects
- 支持 SAFESEH、GS (Buffer Security Check)
- 支持 STL (OneCore、CoreCRT)
- 支持 thread_local
在 Musa.Runtime.TestForDriver 查看更多 ...
void Test$ThrowUnknow()
{
try {
try {
try {
throw std::wstring();
}
catch (int& e) {
ASSERT(false);
MusaLOG("Catch Exception: %d\n", e);
}
}
catch (std::string& e) {
ASSERT(false);
MusaLOG("Catch Exception: %s\n", e.c_str());
}
}
catch (...) {
MusaLOG("Catch Exception: ...\n");
}
}
void Test$HashMap()
{
auto Rand = std::mt19937_64(::rand());
auto Map = std::unordered_map();
for (auto i = 0u; i < 10; ++i) {
Map[i] = std::to_string(Rand());
}
for (const auto& Item : Map) {
MusaLOG("map[%ld] = %s\n", Item.first, Item.second.c_str());
}
}
** 首先 DriverEntry
需要改为 DriverMain
。**
右键单击该项目并选择“管理 NuGet 包”,然后搜索Musa.Runtime
并选择适合你的版本,最后单击“安装”。
或者
如果你的项目模板用的是 Mile.Project.Windows,那么可以直接在你的 .vcxproj
文件里面添加下面代码:
<ItemGroup>
<PackageReference Include="Musa.Runtime">
<!-- 期望的版本 -->
<Version>0.1.0</Version>
</PackageReference>
</ItemGroup>
- 从 release 下载最新包并解压。
- 编辑你的
.vcxproj
文件,在里面添加下面代码:
<PropertyGroup>
<MusaRuntimeOnlyHeader>false</MusaRuntimeOnlyHeader>
</PropertyGroup>
<Import Project="..\Musa.Runtime\config\Musa.Runtime.Config.props" />
<Import Project="..\Musa.Runtime\config\Musa.Runtime.Config.targets" />
<!-- 在这一行上面 -->
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
在你的 .vcxproj
文件里面添加下面代码:
<PropertyGroup>
<MusaRuntimeOnlyHeader>true</MusaRuntimeOnlyHeader>
</PropertyGroup>
这个模式不会自动引入lib文件。
IDE:Visual Studio 2022 最新版
> git clone --recurse-submodules https://github.com/MiroKaku/Musa.Runtime.git
> .\BuildAllTargets.cmd
IntelliJ IDEA 是一个在各个方面都最大程度地提高开发人员的生产力的 IDE。
特别感谢 JetBrains 为开源项目提供免费的 Resharper C++ 等 IDE 的授权
非常感谢这些优秀的项目,没有它们的存在,就不会有 Musa.Runtime。