从C#进行P /调用:调用返回对象的函数 - c#

我有一个本机/非托管DLL,并且它具有一个“ CreateObject”函数,该函数返回指向业务对象的指针..因此调用将是……。喜欢:

[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
private static extern IntPtr CreateObject();

题:
该对象公开了我想调用的公共功能,例如“ Connect()”,但我不知道如何“映射”这些调用,因此我有一个简单的方法签名,例如:

private bool Connect();

有任何想法吗?

参考方案

这样做的方法是提供另一个PInvoke函数,该函数调用执行该方法调用的C函数

[DllImport("MyDll.dll", CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.I1)]
private static extern bool Connect(IntPtr businessObject);

然后在C中定义以下内容

extern "C" {
  bool Connect(Business* pObject) {
    return pObject->Connect();
  }
}

在Java中,执行“ ++++++++”表达式,编译器未报告任何错误并且可以正确执行? - java

我用eclipse编写了这段代码,用war写过,结果为3d。public static void main(String[] args) { double a = 5d + + + + + +-+3d; System.out.println(a); } 参考方案 您的表情可以改写为(5d) + (+ + + + +-+3d) 其中第一个+是应用于两个操作数的…

在Python和C++之间传输数据而无需写入Windows和Unix文件 - python

我有预先存在的python和C ++文件,其中python文件定义了许多点,而C ++代码利用其现有库进行了所需的计算。最终产品是C ++代码写入的文件。我正在寻找一种在python中获取2000点列表的方法,将其传递给函数,然后执行所有C ++代码并输出我需要的文件。其他注意事项。这必须是可以在Linux或Windows机器上工作的东西,并且最少安装新插件…

Java值加变量++ - java

考虑以下代码int val1 = 3; val1++; int val2 = val1++; System.out.println(val1); System.out.println(val2); Val1值= 5;Val2值= 4;为什么Val1的值是“ 5”?据我了解,应该为4,因为:在第1行,它的赋值为3,在第2行,通过val1 ++加上1,结果val…

如何锁定终端运行的perl,obj c,c++,python和ruby等脚本的源代码? - python

我想出售我在perl,obj c,c ++,python,ruby,bash,php等中制作的脚本等它们都在终端中运行。 (Linux)如何锁定源代码,以便无需人们访问源代码即可分发我的脚本..?换句话说,如何将在Terminal中运行的程序的源代码锁定,以便人们可以使用该程序(如果该代码已下载到他们的Linux机器上,但他们无法访问实际的源代码)?例:ex…

将数组从非托管C++传递到C# - c#

我是C#的C ++ / CLI包装新手,在将数组传递给C#时遇到一些问题。原生C ++const double *NDimInversion::GetOutputAverage() const { if ( mOutputOk ) return mAvgY.data().begin(); else throw runtime_error("Erro…