显示调用DLL exporlit call DLL-GetProcAddress 失败-草稿-待修复

因为第三方可能只给你xx.dll, 并不会给你xx.lib 所以你必须采用这种方式调用。

 

调用方法,和函数大家都知道,loadlibrary

1) LoadLibrary("dll path")

2) 获得class 或者function 的内存指针

getprocAdress

GetProcAddress()

这里只是需要在调用的文件处,typedef 一下,这个exprot的函数指针

此处需要注意的调用方式就可 __ccall __stdCall 

typedef void* (__cdecl *kfbreader_PCTOR)();

typedef bool* (__cdecl *kfbreadeInfor_fun)(std::string, int, int, int, int);

 

之后,就可以实例化 class,

函数指针调用 函数。

 

我这这里遇到的几个问题,是,

getprocAddress的时候,总是失败。

比如,我有个export 的class 里面有个function 

int myADD(int,int)

myadd = (MyAdd)GetProcAddress(hst, "MyADD");

总是失败的。

 

后来给定了dll 里面dumpbin 出来的,解释性地址,才get 成功

myadd = (MyAdd)GetProcAddress(hst, "?myAdd@MyDLL@@QEAAHHH@Z");

 

C:\Users\Yingyan.li>dumpbin.exe -exports E:\Project\TestProject\MyTianChiTest\x64\Re
lease\myDLL.dll
Microsoft (R) COFF/PE Dumper Version 14.00.24215.1
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file E:\Project\TestProject\MyTianChiTest\x64\Release\myDLL.dll

File Type: DLL

  Section contains the following exports for myDLL.dll

    00000000 characteristics
    5DA82A2B time date stamp Thu Oct 17 16:45:31 2019
        0.00 version
           1 ordinal base
           4 number of functions
           4 number of names

    ordinal hint RVA      name

          1    0 00001020 ??0MyDLL@@QEAA@XZ = ??0MyDLL@@QEAA@XZ (public: __cdecl MyD
LL::MyDLL(void))
          2    1 00001030 ??1MyDLL@@QEAA@XZ = ??1MyDLL@@QEAA@XZ (public: __cdecl MyD
LL::~MyDLL(void))
          3    2 00001010 ??4MyDLL@@QEAAAEAV0@AEBV0@@Z = ??4MyDLL@@QEAAAEAV0@AEBV0@@
Z (public: class MyDLL & __cdecl MyDLL::operator=(class MyDLL const &))
          4    3 00001040 ?myAdd@MyDLL@@QEAAHHH@Z = ?myAdd@MyDLL@@QEAAHHH@Z (public:
 int __cdecl MyDLL::myAdd(int,int))

  Summary

        1000 .data
        1000 .gfids
        1000 .pdata
        1000 .rdata
        1000 .reloc
        1000 .rsrc
        1000 .text

 

但是要注意,看好对应的函数名。

我翻了很多web 资源,没有一个这样解决的。

所以一定要分享出来。

目前这个文章有点乱。

等随后我再整理一下。

因为我调用别的库的时候,又有问题待解决。

 

thanks

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值