Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Arrays 如何将3D数组返回到未匹配的代码 我是C++的新手。以及编写CLI包装以使用托管代码(DLL) public:array^调用BrownianManagedCode(整数位数、整数维、双时间、整数种子、数组^covMatrix、双步长、整数置乱) { std::string str=“Sobol”; String^newSystemString=gcnewstring(str.c_str()); 对象^结果; 结果=IDevModel::RandomNumberGenerator::iBrownianBridge(数值、维度、时间、种子、covMatrix、步长、新系统字符串、置乱); 数组^devArray=(数组^)结果; 回归贬值; }_Arrays_C++ Cli - Fatal编程技术网

Arrays 如何将3D数组返回到未匹配的代码 我是C++的新手。以及编写CLI包装以使用托管代码(DLL) public:array^调用BrownianManagedCode(整数位数、整数维、双时间、整数种子、数组^covMatrix、双步长、整数置乱) { std::string str=“Sobol”; String^newSystemString=gcnewstring(str.c_str()); 对象^结果; 结果=IDevModel::RandomNumberGenerator::iBrownianBridge(数值、维度、时间、种子、covMatrix、步长、新系统字符串、置乱); 数组^devArray=(数组^)结果; 回归贬值; }

Arrays 如何将3D数组返回到未匹配的代码 我是C++的新手。以及编写CLI包装以使用托管代码(DLL) public:array^调用BrownianManagedCode(整数位数、整数维、双时间、整数种子、数组^covMatrix、双步长、整数置乱) { std::string str=“Sobol”; String^newSystemString=gcnewstring(str.c_str()); 对象^结果; 结果=IDevModel::RandomNumberGenerator::iBrownianBridge(数值、维度、时间、种子、covMatrix、步长、新系统字符串、置乱); 数组^devArray=(数组^)结果; 回归贬值; },arrays,c++-cli,Arrays,C++ Cli,我已经使用CLI控制台应用程序测试了上述代码,它可以根据需要工作。现在我需要将此方法公开给 无约束C++ \u declspec(dllexport)void CallBrownianManagedAdapter() { 布朗包装:布朗; 数组^BRONANARRAY=objectBrownian.CallingBrownianManagedCodeTemp(); 返回布朗纳雷; } 它必须是一个三维阵列,而不是void。我尝试返回管理数组^,但它抛出了一个错误。 你能帮帮我吗?非常感谢。您可

我已经使用CLI控制台应用程序测试了上述代码,它可以根据需要工作。现在我需要将此方法公开给

无约束C++
\u declspec(dllexport)void CallBrownianManagedAdapter()
{
布朗包装:布朗;
数组^BRONANARRAY=objectBrownian.CallingBrownianManagedCodeTemp();
返回布朗纳雷;
}
它必须是一个三维阵列,而不是void。我尝试返回管理数组^,但它抛出了一个错误。
你能帮帮我吗?非常感谢。

您可以尝试将其作为三维双精度安全数组返回,方法是将
MarshalAs
属性应用于函数return(类似于
[return:MarshalAs(UnmanagedType::SAFEARRAY,safearrarysubtype=VarEnum::VT_R8)]
)@Medinoc,谢谢您的回复。我正在考虑将数组作为参数而不是返回类型传递,因此它很容易处理。不确定它是否会那么容易,但应该不会有什么坏处。
public:array<double, 3>^ CallingBrownianManagedCode(int numPaths, int dimension, double time, int seed, array<double, 2>^ covMatrix, double stepSize, int scrambling)
    {
        std::string str = "Sobol";
        String^ newSystemString = gcnew String(str.c_str());

        Object^ result;
        result = IDevModel::RandomNumberGenerator::iBrownianBridge(numPaths, dimension, time, seed, covMatrix, stepSize, newSystemString, scrambling);
        array<double, 3>^ devArray = (array<double, 3>^) result;

        return devArray;
    }
__declspec(dllexport) void CallBrownianManagedAdapter()
{
   BrownianWrapper::BrownianBridgeAdapter objectBrownian;
   array<double, 3>^ brownianArray = objectBrownian.CallingBrownianManagedCodeTemp();
   return brownianArray;        
}