请教labvIEW调用dll的一个问题,在线等各位高手解答!!!
刚刚接触labvIEW,想要实现labvIEW调用dll。关键的是,我想在dll里面写一个函数,里面有判断条件,一旦不满足条件的话,能够弹出一个消息框,Messagebox()提示消息的。关键是Messagebox在dll文件里编译报错,即使调用成功的话,在labvIEW里面如果调用的话,他也能够弹出messagebox吗?
有没有谁能够告诉我这个dll里面的messagebox怎么写呢? 在线等,很着急!!!
void getdata_1(int start,float &data1_1,float &data1_2,float &data1_3,float &data1_4,float &data1_5,float &data1_6,int stop)
{
if(stop==1)
{
float data1_1 = 0;
float data1_2 = 0;
float data1_3 = 0;
float data1_4 = 0;
float data1_5 = 0;
float data1_6 = 0;
return;
}
else if(start==1)
{
void* p;
if(flag_sm==0)
{
/*********************************************************************************************
打开共享内存和信号量(用于传递数据的)(用于显示光电信号的) 三路光电信号
**********************************************************************************************/
//光电1
hshare_data_GD1= RtOpenSharedMemory(SHM_MAP_WRITE, FALSE, "GCCL_data2", &p);
mresult_p_GD1=(mresult_gd1*)p;
if(hshare_data_GD1==NULL)
{
MessageBox("OpenSharedMemory_GD1 failed!");
return;
}
hsema_data_GD1=RtOpenSemaphore(0, FALSE, "GCCL_dataSema2");
if(hsema_data_GD1==NULL)
{
MessageBox("OpenSemaphore_GD1 failed!");
return;
}
//光电2
hshare_data_GD2= RtOpenSharedMemory(SHM_MAP_WRITE, FALSE, "GCCL_data3", &p);
mresult_p_GD2=(mresult_gd2*)p;
if(hshare_data_GD2==NULL)
{
MessageBox("OpenSharedMemory_GD2 failed!");
return;
}
就是这个messagebox会报错!!!!
[解决办法]
SDK中MessageBox的定义如下:
int MessageBox(
__in HWND hWnd,
__in LPCTSTR lpText,
__in LPCTSTR lpCaption,
__in UINT uType
);
一般的用法大概是这样的:
MessageBox(this->Handle, "this is message", "title", MB_OK
[解决办法]
MB_ICONEXCLAMATION);
[解决办法]
注意参数的匹配。
MessageBoxA(NULL, "OpenSemaphore_GD1 failed!", "标题", MB_OK
[解决办法]
MB_ICONERROR);