gpt4 book ai didi

c++ - 0xC0000005 : Access violation executing location 0x00000000

转载 作者:搜寻专家 更新时间:2023-10-31 01:07:34 26 4
gpt4 key购买 nike

我正在编写一个 MFC 项目,该项目尝试调用 DLL 中的一个函数,该函数将以字符串形式返回一些信息。 DLL中的函数如下:

int GetInfo(char* Info)

如果成功,该函数将返回 0。信息将在字符串参数中返回。调用例程如下:

typedef int (WINAPI *FUNC1)(char* szInfo);


HINSTANCE hinstLib;
FUNC1 GetInfo;
char szInfo[50];

hinstLib = LoadLibrary(TEXT("DevInfo.dll"));

// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
GetInfo = (FUNC1) GetProcAddress(hinstLib, "GetInfo");

// If the function address is valid, call the function.
if (NULL != GetInfo)
{
if((GetInfo) (szInfo)) // Error here!!
{
AfxMessageBox(_T("Error Reading"));
}
}

FreeLibrary(hinstLib);
}

这段代码在编译和链接时没有错误。执行时会在上述位置返回“Access violation executing location 0x00000000”的错误。任何人都可以建议吗?


编辑:OP 报告(在对以下答案之一的评论中)在这种情况下:

"The error was due to the called function in the DLL which needsother dlls to be present."

最佳答案

您试图写入(或取消引用)NULL 指针。当您检查调用代码中所有可能的 NULL 时,错误很可能在您的调用代码中。

如果您检查了被调用的代码,也找不到空引用异常的原因,请考虑您可能没有正确匹配调用约定。您的函数指针的类型应该与您的库中的完全相同:

对于 int GetInfo(char* Info) typedef 应该是 typedef int (*FUNC1)(char* szInfo);

关于c++ - 0xC0000005 : Access violation executing location 0x00000000,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19177822/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com