2 lc boyi Lc_BoYi 于 2016.03.21 13:08 提问

获取DLL文件函数指针......

直接用函数名不能获取地址
....
....
typedef void(*Fun)();
Fun P=(Fun)GetProcAddress(P,"print"); //此处无法获取
Fun P=(Fun)GetProcAddress(P,MAKEINTRESOURCE(1));//却可以 MAKEINTRESOURCE这应该是dll文件里面的函数列表 第一个函数就是“print”第二函数print2就是MAKEINTRESOURCE(2);
.....
.....
那么问题就是 第一种方式为啥不行???????????(字符集是多字节字符集)

2个回答

zuishikonghuan
zuishikonghuan   2016.03.21 16:10
已采纳

导出的符号不一定就是函数名字,你可以使用VS自带的dumpbin来查看导出的符合名字是什么,如果想让他是函数名字,可以用def文件导出符号。

zuishikonghuan
zuishikonghuan 前提是dll你有源码,不然只能用别人已经导出的符合
2 年多之前 回复
Lc_BoYi
Lc_BoYi   2016.03.21 18:40

现在可以了

dll中的代码是这样的
#include
using namespace std;
void _declspec(dllimport) print2();

void print2()
{
cout<<"this is dll2"<<endl;
}
void _declspec(dllimport) print3();
void print3()
{
cout<<"this is dll3"<<endl;
}

为什么dumpbin查出来的是?print2@@YAXXZ 而不是print2()??
1 0 0001105F ?print2@@YAXXZ = @ILT+90(?print2@@YAXXZ)
2 1 00011208 ?print3@@YAXXZ = @ILT+515(?print3@@YAXXZ)

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
通过函数指针动态调用 dll 中的函数
/******************************************************************////name       : GetKey//function    : 校验密码 //access      : public//para        : //         1. : const std::string &strdata//       
DLL加载、获取函数指针。
调用DLL接口函数的封装类,很方便。源代码参考金山的开源代码。将原有结构体,修改成类。
DLL中如何应用函数指针与主程序交互
虽然在DLL中定义指向主程序的函数指针,看似程序逻辑有些混乱,但工程实际应用中有时却得这么干,因此简单总结一下,函数指针在开发中的应用。第一步: 创建一般的动态库工程Win32s1第二步: 在动态库.h文件中,自定义函数指针类型,声明导出函数注:导出函数应用到外部主程序的相关计算与结果typedef float (*outFun)(int, int, int);  //函数指针类型// typ
利用函数指针实现动态库的动态调用——函数指针正向调用法
动态库的lib文件里面保存了动态库dll中函数的起始地址,如果不用lib文件,而是我们自己手动通过函数指针来调用可以这样 //客户端初始化 获取handle上下 typedef int (*CltSocketInit)(void **handle ); //客户端发报文 typedef int (*CltSocketSend)(void *handle , unsigned char
C#调用C++ dll,并向调用的函数传递“函数指针”
SocketBLL(C++dll项目): BLL.h文件: #pragma once #include typedef void(*MsgManagement)(int); MsgManagement MsgManage; HANDLE h; DWORD WINAPI RecieveTransientMsg(LPVOID pParam); extern "C" _declspec(dll
C#用委托调用C++写的dll里面的函数指针
程序想实现的功能是:C++封装
C/C++高阶语法:函数指针及其应用,动态链接库,正向调用
1、在介绍正向调用之前,先讲一讲动态链接库的知识:       1)、 动态链接库 DLL,即Dynamic Link Library,在理解动态链接库的时候,我们可以把它理解为一个包含变量,函数或是类的集合,我们可以通过一定的方式来调用包含在这个集合中的那些变量,函数或是类。       2)、动态链接库的创建与编译器或是程序语言没有关系,我们只需要遵守特定的约定便可以创建动态链接库。  
Delphi使用C++库,向库中函数传递回调函数指针的问题解决
Delphi中专用的回调函数是of Object
传递函数指针到DLL函数中去的示例
传递函数指针到DLL函数中去的示例。 里面有DLL 工程和测试程序。
MFC中加载动态库使用函数指针
函数指针介绍: 函数指针是指向函数的指针变量,即本质是一个指针变量。 int (*f) (int x); /* 声明一个函数指针 */ f=func; /* 将func函数的首地址赋给指针f */ 指向函数的指针包含了函数的地址,可以通过它来调用函数。声明格式如下:         类型说明符 (*函数名)(参数)     其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指