C# 程序找不到 C++/CLI DLL

问题描述 投票:0回答:1

完成的步骤:

  1. 标准C#程序制作完成(其实就是 https://learn.microsoft.com/en-us/aspnet/core/tutorials/grpc/grpc-start?view=aspnetcore-8.0&tabs=visual-studio)。 这有效。
  2. 制作了一个 C++/CLR .NET 类库(我需要保留 某些代码对可执行文件的用户“不可见”,这是不可能的 使用 C#、IP 原因...)。
  3. 我想从 C++ 调用静态方法 类。
  4. 我确保 C#/C++ 使用相同的 .NET 版本 (请参阅此处的答案托管 C++ 命名空间在编译期间无法在 C#.Net 中访问
  5. C++ 被 C# 模块正确引用(我假设),否则 编译已经失败了。

当我启动 C# 程序时,出现以下错误:

System.IO.FileNotFoundException HResult=0x80070002 Message=Could not load file or assembly 'grpc_server_processing, Version=1.0.8900.14343, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified. Source=<Cannot evaluate the exception source> StackTrace: <Cannot evaluate the exception stack trace>

C++ DLL 就在它应该在的位置,我也尝试将 DLL 复制到与 C# 可执行文件相同的文件夹,同样的错误。在 Visual Studio 之外启动 C# 可执行文件:同样的错误。错误消息中DLL的版本号与我在Visual Studio中对象浏览器中看到的相同:

enter image description here

我不知道出了什么问题,非常欢迎任何帮助。

c# visual-studio c++-cli
1个回答
0
投票

供快速参考的自我回答,感谢评论中的@Ralf 填补了我的盲点。

事实证明,C# 可执行文件需要 MS ijwhost.dll 来加载 C++/CLR 库。必须将该 DLL 复制到与 C# 可执行文件相同的文件夹中,然后才能正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.