将 SWIG 包装的 C++ .dll 集成到 C# 项目中

Integrate C++ .dll wrapped by SWIG to C# project

我在VS2019下有2个解决方案:RLibrary(包含C++项目)和VTApp(包含C#项目)。

解决方案 RLibrary 有两个项目:RLib C++ .dll 和 SwigW(包装项目). SwigW 生成了以下文件:RLibCSHARP_wrap.cxxRLib.csRLib.iRLibPINVOKE.cs.

RLibPINVOKE.cs 我有这样的行:

   class RLibPINVOKE {
    //...
     static RLibPINVOKE() {
    }
          [global::System.Runtime.InteropServices.DllImport("SwigW", EntryPoint="CSharp_new_Create")]
          public static extern global::System.IntPtr new_Create();
          [global::System.Runtime.InteropServices.DllImport("SwigW", EntryPoint="CSharp_new_Request")]
          public static extern global::System.IntPtr new_Request();
          // ...
    }

因此,在构建 RLibrary 解决方案后,我将有两个 .dll(也是 .lib)文件:RLib.dllSwigW.dll。 我想使用 VTApp 中的 new_Create()new_Request() 函数。 VTApp 还有两个项目:UICoreUI 引用了 Core。我通过右键单击->添加->现有项目[=将RLibPINVOKE.cs文件添加到核心项目56=] 并尝试在 命名空间 UI 中使用 UI 项目中的上述函数,即

using System;
using System.Diagnostics;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;
using Core;
using Newtonsoft.Json;

namespace UI {

public partial class MainWindow {

private void Execute_Req(object sender, EREventArgs e)
{
   //...
   IntPtr p = new_Create();
}

}
}

不幸的是,我收到 CS01013:名称 'new_Create' 在当前上下文中不存在。 错误。 在我看来,即使没有将 SwigW.dll 添加到 Core 项目中,我也不应该出现这种编译时错误。那么,这里的问题是什么?如果需要添加SwigW.dll如何正确添加到Core项目中?另外,我是否也应该将 RLib.dll 添加到 Core 中?

尝试RLibPINVOKE.new_Create()。该方法在 class RLibPINVOKE

class RLibPINVOKE {
//...

您可能需要 using,但 Visual Studio 应该可以在 RLibPINVOKE.

上向您推荐