【发布时间】:2021-08-20 20:29:37
【问题描述】:
前言:我已经在 PowerBuilder 中编程了 25 年,之前上过一门 C 课程,所以我不知道自己在做什么,我非常需要帮助。
我需要编写一个非常简单的 C 程序(无用户界面)来加载 32 位 DLL,调用 2 个函数然后释放 DLL。我第一次使用 VS Code 2019,当我尝试加载 DLL 时得到了 193。从我发现它似乎是由于 64 位系统调用 32 位 DLL 造成的?我尝试使用 VS Premium 2010 并在负载库上得到 126。有问题的 DLL 是 pborc050。有什么想法或建议吗?我发现的一切都表明我需要使用 C 程序(调用 dll 中的函数来创建 powerbuilder 库列表,然后调用另一个函数来导出所有源代码)。这是为一个仍然使用 PB7 编码的应用程序完成的,它非常古老,我假设这就是为什么需要 C 程序而不是任何其他较新的语言的原因。
int main(void)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the pborc050.dll
hinstLib = LoadLibrary("pborc050.dll");
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
....
else
printf("The LoadLibrary(pborc050) dll handle is not valid, error: %d.\n", GetLastError());
return 0;
}
【问题讨论】:
-
您能否确认您是针对 x86 而不是 x64 进行编译?你也看过stackoverflow.com/questions/38579909/…
-
您的进程的位数需要与 dll 的位数相匹配。在您的情况下,这大概意味着 x86(32 位)。很可能 126 意味着您的 dll 有其他依赖项,可能是动态 crtl 运行时 dll。查看可能加载的其他 dll 的一种方法是附加到正在运行的进程,该进程将 dll 与调试器一起使用,并查看加载的模块列表。我假设你有可以加载这个 dll 的 PowerBuilder 应用程序。
-
确切的问题是什么?
标签: c loadlibrary