jtwc 发表于 2022-4-21 17:50

各位老师,C++动态加载dll失败,是啥原因呢?

本帖最后由 jtwc 于 2022-4-21 17:54 编辑

各位老师,C++动态加载dll失败,是啥原因呢?谢谢了
dll源码https://www.52pojie.cn/thread-1180359-1-1.html
出错如下图:#include <stdio.h>
#include <iostream>
#include <windows.h>

using namespace std;

typedef int(*Func)(long, string, long, long);

int main()
{
      
      Func scan_data;
      HMODULE dllheader;
      dllheader = LoadLibrary("F:\\test.DLL");
      if (dllheader == NULL)
      {
                printf("dll加载失败!");
                        
      }
      else
      {
                scan_data = (Func)GetProcAddress(dllheader, "Scan_data");

                if (scan_data == NULL)
                {
                        printf("获取函数句柄失败!");

                }
                else
                {
                        
                        printf("%x", scan_data(7128, "AF 00 00 00 14 00 00 00 CE 48", 0, 0));

                }
      }

      FreeLibrary(dllheader);
      system("pause");
      return 0;
}

xiao14116 发表于 2022-4-21 18:02

获取函数指针的时候是大小写敏感的,再者,你要看看那个函数是不是存在

jtwc 发表于 2022-4-21 18:04

xiao14116 发表于 2022-4-21 18:02
获取函数指针的时候是大小写敏感的,再者,你要看看那个函数是不是存在

老师,谢谢了,经过查看函数是存在的。

jtwc 发表于 2022-4-21 18:08

xiao14116 发表于 2022-4-21 18:02
获取函数指针的时候是大小写敏感的,再者,你要看看那个函数是不是存在

就是scan_data函数的类型不太明确

Ariol 发表于 2022-4-21 18:28

函数编译是C风格的,还是Cpp风格的?

smldhz 发表于 2022-4-21 18:29

原贴说的函数是scan_data 你调用的是Scan_data

jtwc 发表于 2022-4-21 18:31

Ariol 发表于 2022-4-21 18:28
函数编译是C风格的,还是Cpp风格的?

老师,是VC6.0

jtwc 发表于 2022-4-21 18:33

smldhz 发表于 2022-4-21 18:29
原贴说的函数是scan_data 你调用的是Scan_data

老师,谢谢了,改为scan_data后,出错了,如下图:

Ariol 发表于 2022-4-21 18:35

jtwc 发表于 2022-4-21 18:31
老师,是VC6.0

额,我的意思是编译的时候是用C风格编译,还是c++风格编译,C++风格编译,函数名在dll里不会就是那个名字的,会有点扩展。。。

jtwc 发表于 2022-4-21 18:37

Ariol 发表于 2022-4-21 18:35
额,我的意思是编译的时候是用C风格编译,还是c++风格编译,C++风格编译,函数名在dll里不会就是那个名字 ...

DLL是vc6.0编译的,我用的是C++
页: [1] 2 3 4
查看完整版本: 各位老师,C++动态加载dll失败,是啥原因呢?