从cpp调用dll库

时间:2012-06-15 12:25:29

标签: c++ dll

с:/ catalog有三个文件。它们是lib.dll,conf.ini,libImp.cpp。 我在libImp.cpp文件中调用lib.dll“init”函数。要成功调用“init”函数,必须将conf.ini放在同一目录中。 问题是如果我尝试从另一个目录调用dll函数,则会出现错误。它说它没有看到conf.ini。例如,如果libImp.cpp位于c:/ catalog2,则会出现该错误。 代码的一部分,它响应调用dll函数:

HINSTANCE hGetProcIDDLL = LoadLibrary("c:\\catalog\\lib.dll");
FARPROC lpfnGetProcessID = GetProcAddress(HMODULE (hGetProcIDDLL),"init");
typedef int (__stdcall * pICFUNC)(char *);

pICFUNC init;
init = pICFUNC(lpfnGetProcessID);

bool result = 0;
char user_id[]="user";
result = init(user_id);

如何独立于cpp文件位置进行函数调用?

1 个答案:

答案 0 :(得分:1)

你在混合概念。

.cpp文件用作编译器的输入,不能自行执行。输入文件libImp.cpp是否位于c:\catalog\无关紧要。编译器输出(我假设的.EXE?)的最终位置可能很重要。

.INI文件的位置由DLL中的代码确定。它正在加载INI文件,因此它决定了在哪里查找INI文件。我们无法猜测它在哪里。像SysInternals ProcMon这样的工具可用于监视DLL并检查它的位置。