我在 MATLAB 中生成了 C++ 共享库,并将其集成到 C++ 中的 Win32 控制台应用程序中。我必须从 PHP 调用这个控制台应用程序。它有 5 个输入,应该从 php 传递。当我运行应用程序时,它会运行输入参数。正常运行的代码如下:
#include "stdafx.h"
#include "shoes_sharedlibrary.h"
#include <iostream>
#include <string.h>
#include "mex.h"
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
/* Call the MCR and library initialization functions */
if( !mclInitializeApplication(NULL,0) )
{
exit(1);
}
if (!shoes_sharedlibraryInitialize())
{
exit(1);
}
mwArray img= "C:/Users/aadbi.a/Desktop/dressimages/T1k5aHXjNqXXc4MOI3_050416.jpg";
double wt1 = 0;
mwArray C(wt1);
double wt2=0;
mwArray F(wt2);
double wt3=0;
mwArray T(wt3);
double wt4=1;
mwArray S(wt4);
test_shoes(img,C,F,T,S);
shoes_sharedlibraryTerminate();
mclTerminateApplication();
return 0;
}
C、F、T、S 的值介于 0 和 1 之间。如何传递 _TCHAR* 中的输入参数?如何将 _TCHAR* 转换为十进制或双精度并再次将其转换为 mwArray 以传递到 test_shoes . test_shoes 仅将 mwArray 作为输入。
test_shoes 函数定义为:
void MW_CALL_CONV test_shoes(const mwArray& img_path, const mwArray& Wcoarse_colors,
const mwArray& Wfine_colors, const mwArray& Wtexture, const
mwArray& Wshape)
{
mclcppMlfFeval(_mcr_inst, "test_shoes", 0, 0, 5, &img_path, &Wcoarse_colors, &Wfine_colors, &Wtexture, &Wshape);
}