C# 如何调用C++动态链接库DLL 参数为double指针

C++中方法函数
int RuteDistance(double longitude_pre, double latitude_pre, double longitude_nxt, double latitude_nxt, double *dis);

C#如何引用DLL并调用

using System.Runtime.InteropServices; 加到该加的地方,你懂

[DllImport("xxxx.dll", EntryPoint="RuteDistance", CallingConvention=CallingConvention.Cdecl)]
static int RuteDistance(double longitude_pre, double latitude_pre, double lonitude_nxt, double latitude_nxt, ref double dis); 放在类里面、方法外面

其中函数名EntryPoint根据你dll导出名而定,CallingConvention.Cdecl也根据需要可能是CallingConvention.Stdcall不过就你函数声明来看应该是Cdecl。最后一个参数如果是用于输出的,可以考虑把ref改为out
温馨提示:内容为网友见解,仅供参考
无其他回答

c#如何调用c++的动态库函数
[DllImport("动态链接库名.dll",CallingConvention=CallingConvention.Cdecl)] \/\/ C#对C++函数原型声明如下: public static extern bool SendProgram(IntPtr strIP,这里是回调函数用C#的委托类型来调用,IntPtr pRoutinePara,Int32 FileType);

C#如何调用C++的DLL的结构体数组指针
1、添加引用 右击项目-添加引用-浏览 找到本地的dll文件 2、using 该dll文件里面代码的名称空间 然后就可以调用dll文件里面的类(test)和方法(add)了 例如:using aa.test namespace conslole1 { class Program { static void Main(string[] args){ Test test1=new Test();test1.add(1, 2);}...

C#和C C++调用dll变量转换问题,双指针?
看你c语言的函数声明,没有WINAPI或CALLBACK或APIENTRY之类的修饰,有可能不是stdcall,我给改成cdecl了。参数也直接使用指针了。其实C#是可以用指针的,直接用指针就好了嘛………

C#调用c++dll中 函数带指针参数方法
对应关系如下:C++ --- C 传入的char* ---string 传出的char* --- StringBuilder(预分配空间)short ---short char --- byte char[n] --- fixed byte[n]结构指针 ---结构指针 函数指针 --- 委托

C++封装的dll,char类型的出参C#中如何接收
C#用非托管资源弄弄看看 可以用不安全代码吗?char out string 都改成 [Out]StringBuilder CharSet=CharSet.Ansi, CallingConvention=CallingConvention.Cdecl \/ stdcall StringBuilder sb = new StringBuilder(16); \/\/ 16替换为你所需要的容量,也就是先申请好内存空间 再调用该函数,传入本参数 ...

c#调用C、C++编写的dll
\/\/ compile with: \/LD int __declspec(dllexport) SampleMethod(int i){ return i*10;} 该示例使用两个文件 CM.cs 和 Cmdll.c 来说明 extern。C 文件是示例 2 中创建的外部 DLL,它从 C# 程序内调用。\/\/ cm.cs using System;using System.Runtime.InteropServices;public class MainClass {...

C#调用C++动态库DLL结构指针函数问题?
源代码用VB.NET写得,机器转化成C#的,加了很多命名空间的引用。VB.NET里只需要引用system.runtime.interopservices就可以了。using Microsoft.VisualBasic;using System;using System.Collections;using System.Collections.Generic;using System.Data;using System.Diagnostics;using system.runtime.interopservices...

如何在C#中调试C++写的DLL代码
1.将DLL源码工程项目加入目前用到的C#工程的解决方案中。2.设置DLL工程的生成模式为Debug,Debug模式下会生成pdb调试文件。3.设置C#工程的生成模式为Debug,否则无法命中DLL源码中的断点。4.由于DLL工程是独立的,所以将DLL工程生成的dll文件以及pdb文件拷入C#工程的Debug输出目录下。5.设置断点,开始调试...

c#调用dll,函数返回值为自定义的C++接口指针,如何在C#中定义函数返回值...
类的实例通过指针传出来,然后在类的基础上再封装一层,每个公开的函数都封一个函数,参数表里直接把创建的类的指针给传进去,在dll内部再调相应的方法。楼主不妨也这样试一下。比如: g()这个函数,就返回一个IntPtr。这个指针就是在dll中创建对象的指针,但在C#里不具体的把它分出来是张三还是王二...

C#调用C++DLL反回值是个抽象类指针
类的实例通过指针传出来,然后在类的基础上再封装一层,每个公开的函数都封一个函数,参数表里直接把创建的类的指针给传进去,在dll内部再调相应的方法。楼主不妨也这样试一下。g()这个函数,就返回一个IntPtr。这个指针就是在dll中创建对象的指针,但在C#里不具体的把它分出来是张三还是王二。dll中...

相似回答