gpt4 book ai didi

c++ - GetProcAddress() 失败,错误 127

转载 作者:太空狗 更新时间:2023-10-29 20:59:01 24 4
gpt4 key购买 nike

这是我的 DLL 代码:

#include <Windows.h>
#include <iostream>

int sysLol(char *arg);

int sysLol(char *arg)
{
std::cout<<arg<<"\n";
return 1;
}

这是我的应用程序代码:

#include <Windows.h>
#include <iostream>
#include <TlHelp32.h>
#include <stdlib.h>

typedef int (WINAPI* Lol)(char* argv);
struct PARAMETERS
{
DWORD Lol;
};

int main()
{
PARAMETERS testData;
HMODULE e = LoadLibrary(L"LIB.dll"); //This executes without problem
if (!e) std::cout<<"LOADLIBRARY: "<<GetLastError()<<"\n";
else std::cout<<"LOADLIBRARY: "<<e<<"\n";
testData.Lol = (DWORD)GetProcAddress(e,"sysLol"); //Error 127?
if (!testData.Lol) std::cout<<testData.Lol<<" "<<GetLastError()<<"\n";
else std::cout<<"MESSAGEBOX: "<<testData.Lol<<"\n";
std::cin.ignore();
return 1;
}

因此,我的 LIB.dll 已使用 LoadLibrary() 成功加载,但 GetProcAddress() 失败并返回 127。这似乎是因为它没有找到我的函数名称,但我不明白为什么会失败。

非常感谢您的帮助! :)~P

最佳答案

由于该标记是 C++,您需要为该函数声明一个 C 名称:

extern "C" int sysLol(char *arg);

您可以看到编译器为您的 C++ 函数提供的实际名称 Dependency Walker .

成功时,将函数转换为 GetProcAddress 返回的指针为实际函数类型:

typedef int (*sysLol_t)(char *arg);
sysLol_t pFunc = GetProcAddress(e,"sysLol");

关于c++ - GetProcAddress() 失败,错误 127,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877507/

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