做了一个项目需要把matlab下的m文件生成dll或者exe或者com组件在c/c++下使用。m文件中涉及到matlab中的神经网络函数 ,没有神经网络时候dll,exe,com都可以成功调用实现想要的结果无论是画图还是计算,现在有神经网络函数的情况下我现在做到是都出现下面的问题。(test1是matlab的m文件包含了神经网络函数patternet)
总结:需要自行实现神经网络算法。
1 ,dll 的情况,使用用是matlab生成的libTest1.h,libTest1.lib,libTest1.dll三个文件
(1)libTestInitialize();
(2)mlfTest(params);
(3)libTestTerminate();
2,exe的情况,使用matlab生成的exe,网上有很多方法。
3,com组件
这个文章
VC++和MATLAB的混合编程之神经网络工具箱
中提到可以调用matlab神经网络工具箱。
。生成com组件使用。。.bat注册COM组件,使用下面代码 调用函数,代码运行出现上面图片中错误。查原因是matlab的toolbox神经网络函数不能用。
#include "stdafx.h"
#include "stdio.h"
#include "testCom_idl_i.c"
#include "testCom_idl.h"
#include<objbase.h>
#include <iostream>
using namespace std;
#include<objbase.h>
int main(){
//exe :E:\\trainNet.exe
//parameters:D:\\autoextract\\fv.mat D:\\autoextract\\testdata\\ D:\\autoextract\\triandata\\
if (FAILED(CoInitialize(NULL)))
{
cout << "unable to initialize COM" << endl;
}
IClass1 * pIClass;//接口指针
HRESULT hr = CoCreateInstance(CLSID_Class1,
NULL,
CLSCTX_INPROC_SERVER,
IID_IClass1,
(void **)& pIClass);
if (SUCCEEDED(hr))
{
cout << "succssed" << endl;
VARIANT *net=NULL;
hr = pIClass->test1(1,net);//com中方法
cout << net << endl;
pIClass->Release();
}
CoUninitialize();
system("pause");
return 0;
}
中提到可以调用matlab神经网络工具箱。
。生成com组件使用。。.bat注册COM组件,使用下面代码 调用函数,代码运行出现上面图片中错误。查原因是matlab的toolbox神经网络函数不能用。
#include "stdafx.h"
#include "stdio.h"
#include "testCom_idl_i.c"
#include "testCom_idl.h"
#include<objbase.h>
#include <iostream>
using namespace std;
#include<objbase.h>
int main(){
//exe :E:\\trainNet.exe
//parameters:D:\\autoextract\\fv.mat D:\\autoextract\\testdata\\ D:\\autoextract\\triandata\\
if (FAILED(CoInitialize(NULL)))
{
cout << "unable to initialize COM" << endl;
}
IClass1 * pIClass;//接口指针
HRESULT hr = CoCreateInstance(CLSID_Class1,
NULL,
CLSCTX_INPROC_SERVER,
IID_IClass1,
(void **)& pIClass);
if (SUCCEEDED(hr))
{
cout << "succssed" << endl;
VARIANT *net=NULL;
hr = pIClass->test1(1,net);//com中方法
cout << net << endl;
pIClass->Release();
}
CoUninitialize();
system("pause");
return 0;
}