This content is not available in your preferred language.

The content is shown in another available language. Your browser may include features that can help translate the text.

Accessing DLL Functions in LabWindows™/CVI™ Program Without the Import Library

Updated Apr 30, 2018

Issue Details

I wish to do run-time dynamic linking in LabWindows™/CVI, but I don't want to explicitly include the import library in my project. How can I set this up?

Solution

You must use the Windows SDK functions LoadLibrary and GetProcAddress to access specific DLL functions at run-time without including any DLL libraries in your project. The following is sample code for accessing a function within a DLL at run-time. 

// 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"); 
}

WAS THIS ARTICLE HELPFUL?

Not Helpful