gpt4 book ai didi

c# - 使用 CLI 或任何其他方式将 C++ 库静态链接到 C# 进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 08:03:30 28 4
gpt4 key购买 nike

是否可以采用用 C++ 编写的静态库,并以某种方式将其集成到 .NET 进程中,使 .NET 进程与 lib 集成到一个 exe 文件中?
我的意思是我知道我可以从 C# 进程中调用 C++ DLL,但用户仍然必须拥有 C++ DLL,但是是否可以使用 lib 而不是 DLL?(这样用户就不会甚至不知道该 exe 使用了我的库)。如果可能的话,怎么做?

最佳答案

在其他托管语言中独一无二的是,C++ 允许混合模式 - 同一编译单元 (dll/exe/lib) 中托管 (C++/CLI) 和 native C++ 的组合,来回调用。也许你可以利用它,创建一种粘合层。不过我从未尝试过。

关键是/clr 编译器开关 - 您将它应用于项目中的某些文件而不是其他文件。然后你创建一些托管的类/函数。非托管位可以看到它们并调用它们,反之亦然。传递原始类型是透明完成的,对于字符串,存在一些编码技巧。我可以在星期一发布更多内容。

编辑:似乎需要一些深奥的魔法。不在混合 C++ 端 - 在将结果链接到 C# 端。您知道,Visual Studio IDE 并不支持这种情况。很有可能,常规构建过程不会有任何用处。

EDIT2:您可以通过为编译器指定/LN 命令行选项和为链接器指定/NOASSEMBLY 将 C++ 位编译为 .netmodule。现在,将其链接到 C# exe...

关于c# - 使用 CLI 或任何其他方式将 C++ 库静态链接到 C# 进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12552951/

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