Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在C++中包含C++头和库? 如何在C++中使用C++头和库?我目前正在研究我的项目,我希望使用基于像素的自适应分段器PBAS,它只在C++中可用。有办法吗?_C#_Image Processing - Fatal编程技术网

C# 如何在C++中包含C++头和库? 如何在C++中使用C++头和库?我目前正在研究我的项目,我希望使用基于像素的自适应分段器PBAS,它只在C++中可用。有办法吗?

C# 如何在C++中包含C++头和库? 如何在C++中使用C++头和库?我目前正在研究我的项目,我希望使用基于像素的自适应分段器PBAS,它只在C++中可用。有办法吗?,c#,image-processing,C#,Image Processing,在很大程度上取决于您试图调用什么以及它有多复杂。对于简单的事情,可以使用DllImport属性。例如: [DllImport("User32.dll")] static extern Boolean MessageBeep(UInt32 beepType); 将从User32.dll导入MessageBeep。在执行此操作时,您必须非常清楚,您正在从托管代码调用非托管代码,并且指针的处理方式可能不同 如果您有tlb类型库或自注册dll,通常可以在Visual Studio中将其选择为引用,并将

在很大程度上取决于您试图调用什么以及它有多复杂。对于简单的事情,可以使用DllImport属性。例如:

[DllImport("User32.dll")] static extern Boolean MessageBeep(UInt32 beepType);
将从User32.dll导入MessageBeep。在执行此操作时,您必须非常清楚,您正在从托管代码调用非托管代码,并且指针的处理方式可能不同

如果您有tlb类型库或自注册dll,通常可以在Visual Studio中将其选择为引用,并将为您创建称为Interop的绑定

正如评论中提到的,您还可以使用C++/CLI编写一个包装器类,该类将连接托管世界和非托管世界


如果是我,我会先看看VS是否会接受此作为参考。如果tlb可用,请先尝试tlb。

很大程度上取决于您试图调用的内容以及它的复杂程度。对于简单的事情,可以使用DllImport属性。例如:

[DllImport("User32.dll")] static extern Boolean MessageBeep(UInt32 beepType);
将从User32.dll导入MessageBeep。在执行此操作时,您必须非常清楚,您正在从托管代码调用非托管代码,并且指针的处理方式可能不同

如果您有tlb类型库或自注册dll,通常可以在Visual Studio中将其选择为引用,并将为您创建称为Interop的绑定

正如评论中提到的,您还可以使用C++/CLI编写一个包装器类,该类将连接托管世界和非托管世界


<>如果我是第一个,如果VS会接受这个作为参考,如果TLB是可用的,首先尝试TLB。我相信你可以使用一个互操作程序集,但是我不认为你可以在C中使用标准的C++库,因为它们编译的方式不同。虽然不是100%的肯定,但只是希望给你正确的方向。看看C++ + CLI…如果我要使用C++,我没有太多的想法去做,我相信你可以使用一个互操作程序集,但是我认为你不能只使用C中的标准C++库,因为它们被编译得不一样。虽然不是100%肯定,但只是希望给你正确的方向。看看C++ + CLI…如果我要使用C++,我没有太多的想法去做…我仍然混淆什么PL使用C++或C。我对C非常熟悉,如果我直接使用C++,这就是我必须知道的。我假设你的问题是你希望使用C,并针对我的答案。如果您使用的是Visual Studio,请进入或创建您的C项目。添加对希望使用的dll或更好的tlb的引用,并查看它是否失败/出现问题。如果添加引用成功,请使用对象浏览器查看可用的方法。如果你不能让VS生成一个互操作,尝试添加一个DLIMPART到你的C,使用你想要的DLL和你感兴趣的方法……我仍然混淆什么PL使用C++或C。如果我直接使用C++,这就是我必须知道的。我假设你的问题是你希望使用C,并针对我的答案。如果您使用的是Visual Studio,请进入或创建您的C项目。添加对希望使用的dll或更好的tlb的引用,并查看它是否失败/出现问题。如果添加引用成功,请使用对象浏览器查看可用的方法。如果您无法让VS为您生成互操作,请尝试向您的C添加一个使用您想要的dll和您感兴趣的方法的DllImport。