2012-02-21 48 views

回答

1

A DLL是一个包含已编译程序逻辑的库文件,就像EXE一样。你不能单独执行它,但是像EXE文件一样,你不能只是将它“加载”到你的项目中。

您将需要使用像Load Library这样的函数来加载函数库,然后使用GetProcAddress来查找要调用的函数。


编辑:

后,你澄清你的问题在评论你试图写一个Windows程序,而不是您的设备上运行的程序。

我写了一些示例代码,以显示你如何开始:

#include <windows.h>  // This is a windows header file. The functions I mentioned above are declared here 
#include "mpusbapi.h" // This is the header file supplied. It declares the function prototypes that are defined in the DLL 

int main(int argc, char* argv) 
{ 
    // Try to load the library 
    HMODULE mpbusDLL = NULL; 
    mpbusDLL = LoadLibrary(L"mpusbapi.dll"); 

    if (mpbusDLL != NULL) { 
     // If the library could be loaded, then load the functions using GetProcAddress() 

     // Load the function 'MPUSBOpen' from the DLL 
     MPUSBOpen = (HANDLE(*)(DWORD, PCHAR, PCHAR, DWORD, DWORD)) GetProcAddress(mpbusDLL, "_MPUSBOpen"); 

     ... 
     MPUSBOpen(...); 
    } 
} 

这种C代码,将载入您libary,然后尝试加载功能MPUSBOpen,这是在你的DLL中实现。
您将需要以相同的方式加载头文件中定义的其他函数(至少如果您想使用它们)。

+0

即时使用LoadLibrary函数时出现错误。 '不一致的dll链接'。我的代码是HMODULE WINAPI LoadLibrary( __in LPCTSTR mpusbapi ); – moesef 2012-02-21 19:40:25

+0

这是因为你试图声明一个Windows API函数。我仍然不知道你想做什么,但是如果你可以使用WinAPI函数,那么不要重新声明它们,而是为它们导入头文件。在这种情况下:'#include ' – Chris 2012-02-21 19:44:51

+0

我想我应该给你更多的信息.​​.....我正尝试为Linear Acutator创建一个自定义程序。我正在尝试使用[Detalied LAC Instructions](http://www.firgelli.com/pdf/LAC_Advanced_Configuration.pdf)第6页上的说明来创建此自定义程序。我在编程方面有点新手,但我的印象是,如果我链接提供的DLL,我将能够使用提供的函数和控制值。 – moesef 2012-02-21 19:50:26

相关问题