繁体   English   中英

调用DLL函数C ++ Rad Studio XE3

[英]Calling a dll function C++ rad studio xe3

我尝试从dll调用函数,但似乎无法正常工作。 这是代码:

HMODULE  dllhandle;
#include "Unit1.h"
#include <windows.h>
#include <iostream.h>  
#include <conio.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{

    dllhandle = LoadLibrary((wchar_t*)"PBusDrv.dll");

if(dllhandle)
{
typedef int (*PBUSCONNECTEX)(String aux1, String aux2, String ip);
PBUSCONNECTEX PBusConnectEx;

PBusConnectEx =  (PBUSCONNECTEX)GetProcAddress(dllhandle,  "PBusConnectEx");

PBusConnectEx(" "," ","192.168.30.252");
   }
}

dllhandle始终返回空值。

问题可能在这里:

(wchar_t*)"PBusDrv.dll"

您正在将ANSI字符串(每个字符1个字节)转换为宽字符串(每个字符2个字节)。 这永远不会起作用。

您有3种选择:

1-使用ANSI版本的LoadLibrary函数

dllhandle = LoadLibraryA("PBusDrv.dll");

2-根据项目配置使用适当的字符串类型

dllhandle = LoadLibrary(_T("PBusDrv.dll"));

3-使用LoadLibrary的宽字符串版本,同时将宽字符串作为输入

dllhandle = LoadLibraryW(L"PBusDrv.dll");

注意:请勿将非特定功能宏与一种特定类型的字符串混合使用。 例如,不要这样做:

dllhandle = LoadLibrary(L"PBusDrv.dll");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM