Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/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
Pointers C++/CLI如何翻译此代码? 我对C++不了解很多,但我必须用.NET来做一些C++代码。我尝试过DLLImport,但失败了。因此,我尝试使用C++/CLI制作一种包装器_Pointers_C++ Cli_Iplimage - Fatal编程技术网

Pointers C++/CLI如何翻译此代码? 我对C++不了解很多,但我必须用.NET来做一些C++代码。我尝试过DLLImport,但失败了。因此,我尝试使用C++/CLI制作一种包装器

Pointers C++/CLI如何翻译此代码? 我对C++不了解很多,但我必须用.NET来做一些C++代码。我尝试过DLLImport,但失败了。因此,我尝试使用C++/CLI制作一种包装器,pointers,c++-cli,iplimage,Pointers,C++ Cli,Iplimage,但我不确定是否能理解一切 这是我想导出的函数(MyFoals:)的基本C++文件 这是包装器h代码 #include "MyFunction.h"; // the file containing the h code #include <string> namespace MyWrapper{ public ref class MyWrapperClass { public: MyWrapper(){}; IplImage^ GetMyFu

但我不确定是否能理解一切

这是我想导出的函数(MyFoals:

)的基本C++文件 这是包装器h代码

#include "MyFunction.h"; // the file containing the h code
#include <string>

namespace MyWrapper{
 public ref class MyWrapperClass {
     public: 
       MyWrapper(){};
       IplImage^ GetMyFunction(IplImage *src, std::string^ name, OneEnumerationType myEnum, bool myBool, float myFloat);
}
以下是我的问题:

1) 当我编译时,错误是“^:无法在IplImage类型上使用此间接寻址”,并且类型为“std::string”的消息相同。 我遵循这一逻辑:

ClasseNative clNat2 = *clNat;  --> ClasseManagee clMan2 = *clMan;
ClasseNative &clNat3 = clNat2; -->  ClasseManagee %clMan3 = clMan2;
ClasseNative *clNat4 = &clNat2; --> ClasseManagee ^clMan4 = %clMan2;
我已经看到,使用System::String更好。我尝试了这种方法,但初始函数使用的是std::String…顺便说一句,为什么更改更好

2) 如何获得MyFunction IplImage结果?我想通过一个私有成员和一个get,但我不知道如何初始化它

3) 棘手的问题。当我调用包装器时,我是否可以将IplImage结构(来自OpenCV库)(我函数的结果)放入IplImage.NET结构中?不知道这个问题是否可以理解

非常感谢你的帮助。
关于这个问题,您需要花3天的时间来解决…

您的包装器类需要基于System::string^参数的内容创建一个新的std::string,然后传递给您的本机函数。否则,您需要重写该函数,将其他内容作为字符串输入,例如LPWSTR或LPCSTR

您可以编写一个ref类,使其具有IplImage将具有的所有数据的属性,然后将其传递给您的包装器类。您的包装器类然后基于ref类的数据创建一个IplImage对象,并传递给本机函数。只需添加“^”,即可反转返回值的数据复制方向。

1)要管理本机对象,必须创建包装器或传输数据,例如:

std::string nativeString = "my string";
String^ managedString = gcnew String(nativeString.c_str());
//now you can return it as 
2) 创建托管包装器或使用原始数据类型传输数据

3) 请注意,如果这有帮助,请查看

尝试阅读一些有关C++\CLI的详细信息以下是一些不错的教程:


所以我需要添加某种类型的System::String ^myVar作为私有变量?以及如何将数据从Std::String传输到System::String?作为参数。Std:String作为函数调用的局部变量。托管包装类使用者无法识别本机Std:String。感谢第二个链接。我已经阅读了第一个链接。
ClasseNative clNat2 = *clNat;  --> ClasseManagee clMan2 = *clMan;
ClasseNative &clNat3 = clNat2; -->  ClasseManagee %clMan3 = clMan2;
ClasseNative *clNat4 = &clNat2; --> ClasseManagee ^clMan4 = %clMan2;
std::string nativeString = "my string";
String^ managedString = gcnew String(nativeString.c_str());
//now you can return it as