首頁
支援
在沒有 Import Library的情況下存取LabWindows™/ CVI™程式中的DLL函數
在沒有 Import Library的情況下存取LabWindows™/ CVI™程式中的DLL函數
更新 Oct 1, 2024
我希望在LabWindows™/ CVI中進行run-time dynamic linking,但是我不想在project中明確包含import library。我可以怎麼設定呢?
如果不想在project中明確包含import library,但是又希望在LabWindows™/ CVI中進行run-time dynamic linking的方法,你必須在run-time時使用Windows SDK functions LoadLibrary和GetProcAddress去存取特定的DLL函數,以下是在run-time時存取DLL中函數的範例程式:
// File: RUNTIME.C
// Sample code that uses LoadLibrary and GetProcAddress to access myFunction from MYDLL.DLL
// You will need to include stdio.h and windows.h in your project to use this code
#include <stdio.h>
#include <windows.h>
typedef void (*MYPROC)(LPTSTR);
void main()
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary("mydll");
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myFunction");
// If the function address is valid, call the function.
if (fRunTimeLinkSuccess = (ProcAdd != NULL))
(ProcAdd) ("message via DLL function\n");
// Free the DLL module
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative
if (! fRunTimeLinkSuccess)
printf("message via alternative method\n");
}
相關連結
FAQ: Using Dynamic Link Libraries with NI LabWindows™/CVI
Calling a DLL in CVI: Explicit Linking vs. Implicit Linking (Dynamic vs. Static)
其他支持選項
詢問NI社區
在我們的論壇中與其他用戶協作
搜索NI社區以尋求解決方案
請求工程師的支持
需要具備有效的服務合約或有效的租用版軟體,且支援選項因國家/地區而異。
打開服務請求
了解租用版軟體與服務
了解硬體服務計畫
Was this information helpful?
Helpful
Not Helpful