C++/CLI 调用本机 C++ 方法

本文关键字:C++ 方法 本机 CLI 调用 | 更新日期: 2023-09-27 18:34:48

我编写了一个C ++/cli程序,该程序调用我的本机C ++函数,

该函数将结构指针作为参数。 所以就像我使用 C++/CLI 为我的本机 C++ 编写了一个包装器,以便我可以将其公开给 C# WCF 程序(它将服务器充当另一个 C++ 客户端(。

现在,当我编译我的 C++/CLI 程序时,我没有收到任何错误,它被编译并生成了此 C++/CLI 的 DLL,但是当查看输出窗口时,我看到一些类似的东西在链接中失败(这不会影响编译(。以下是我在输出文件中看到的消息。

1>Linking...
1>Embedding manifest...
1>Caching metadata information for c:'windows'system32'msxml6.dll...
1>Could not cache metadata for c:'windows'system32'msxml6.dll: reflection failed.

所以我想知道这条消息是什么意思,如果我在 C# WCF 程序中使用此 C++/CLI DLL,这是否会影响我的 C# WCF 程序,以及如何摆脱此消息。

C++/CLI 调用本机 C++ 方法

我很确定MSXML6.DLL是一个本机DLL,因此它没有任何托管元数据。

我用.NET Reflector验证了这一点:

// Assembly msxml6
  Location: C:'Windows'System32'msxml6.dll
  Name: msxml6, 'C:'Windows'System32'msxml6.dll' is not a .NET module.

请确保在链接器 -> 输入 ->"其他依赖项"项目选项中列出其导入库,而不是尝试像引用 .NET 程序集一样引用它。