总有一天 发表于 2007-5-14 22:57

matlab产生的dll文件可否被C++builder调用

如题,我模仿着例子写了个简单的小程序,编译通过了,但是总是不能将dll中的函数载入。
程序为
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "test.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HINSTANCEhComm;
extern "C" _declspec (dllimport) void _fastcallfprintf(int n,char *m );
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner)
{
      hComm=LoadLibrary("hello.dll");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
       FARPROC   lpFarProc;
       lpFarProc=GetProcAddress(hComm," fprintf");
       if(lpFarProc==NULL)
       ShowMessage("hello Error");
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
    FreeLibrary(hComm);
}
//-------------------------------------------------------


matlab小程序是从示例中找到的,两句话
function hello
fprintf(1,'Hello, World\n' );


运行后的结果是
hello Error的提示框

不知道是什么原因,是不是matlab的dll文件不适合被C++builder调用啊?

sunnyboy501 发表于 2007-5-15 11:12

请问一下楼主:在matlab 7.0下,如何将M函数转变为*.dll文件啊?

总有一天 发表于 2007-5-16 09:34

如果是生成C语言的动态链接库,使用:
mcc -W lib:filename-Tlink: libfilename0.m
如果是生成C++的动态链接库,使用:
mcc -W cpplib: filename-T link:lib filename0.m
filename是带生成链接库的名字,filename0是原m文件的名字
此命令在matlab下使用

sunnyboy501 发表于 2007-5-16 19:22

请问一下:这样生成的.dll文件可以在m文件中调用吗?

总有一天 发表于 2007-5-16 19:48

我也不清楚哦,我生成的.dll文件是想让c++builder调用,结果没弄好。不知道有没有用.dll文件生成.lib文件的,然后由.lib文件导入。你可以试一下,这纯属自己臆想的,嘿嘿。

sunnyboy501 发表于 2007-5-16 21:44

哦!好的!谢谢啊!!
页: [1]
查看完整版本: matlab产生的dll文件可否被C++builder调用