標題: LabWindows/CVI調(diào)用DLL實用例程(菜農(nóng)HotPower) [打印本頁] 作者: hotpower 時間: 2009-4-2 23:57 標題: LabWindows/CVI調(diào)用DLL實用例程(菜農(nóng)HotPower) /*-------------------------------------------------------------------------------------------------------*/
/* LabWindows/CVI調(diào)用DLL實用例程(菜農(nóng)HotPower) */
/* 本例程是在CVI自帶的simple添加調(diào)用mydll.dll的函數(shù)MyDLLCdeclFunction() */
/* 網(wǎng)上和CVI的例程很少,一般為調(diào)用LIB實例,但很多dll都是以*.dll提供的,故本例程很實用。 */
/* 本例程主要是調(diào)用了三個Windows API函數(shù)LoadLibrary(),GetProcAddress(),FreeLibrary() */
/* 菜農(nóng)HotPower@126.com 2008.5.27 于西安大雁塔菜地 */
/*-------------------------------------------------------------------------------------------------------*/
/* This is a simple project that will call
* functions from an external DLL */
//#define __cplusplus
#include
#include //需要的API函數(shù)實際在winbase.h中定義
#include /* Needed if linking in external compiler; harmless otherwise */
#include
#include
#include "mydll.h"
/*-------------------------------------------------------------------------------------------------------*/
typedef long int DLLEXPORT (*DLLCdeclFunction)(char *);//定義函數(shù)指針
/*-------------------------------------------------------------------------------------------------------*/
int status;
char message[80];
int main (int argc, char *argv[])
{
/*-------------------------------------------------------------------------------------------------------*/
HMODULE hinstLib;
DLLCdeclFunction DLLFunction;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
/*-------------------------------------------------------------------------------------------------------*/
if (InitCVIRTE (0, argv, 0) == 0) /* Needed if linking in external compiler; harmless otherwise */
return -1; /* out of memory */
/* Tell the dll to run it's user interface */
RunDllUI();
/*-------------------------------------------------------------------------------------------------------*/
// Get a handle to the DLL module.
hinstLib = LoadLibrary("mydll.dll");//裝載動態(tài)鏈接庫mydll.dll
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)//成功裝載動態(tài)鏈接庫mydll.dll
{
DLLFunction = (DLLCdeclFunction)GetProcAddress(hinstLib, (LPCSTR)"MyDLLCdeclFunction");//取函數(shù)指針地址
// If the function address is valid, call the function.
if (fRunTimeLinkSuccess = (DLLFunction != NULL))//dll中有函數(shù)MyDLLCdeclFunction()
{
Fmt(message, "message via DLL function\n");
status = (long int)DLLFunction (message);//調(diào)用dll函數(shù)!!!
}
// Free the DLL module
fFreeResult = FreeLibrary(hinstLib);//卸載動態(tài)鏈接庫mydll.dll
}
// If unable to call the DLL function, use an alternative
if (! fRunTimeLinkSuccess)
{
Fmt(message, "message via alternative method\n");
MessagePopup ("CVI MessagePopup ", message);
}
/*-------------------------------------------------------------------------------------------------------*/
點擊下載工程源碼: cvidlldemo.rar 作者: cyber211 時間: 2009-6-28 23:10
還在用LabWindows/CVI啊,換Labview,不用編代碼了作者: f.luo 時間: 2010-5-25 22:20
頂一下