通过函数指针动态调用 dll 中的函数

原创 2006年06月22日 12:48:00

/******************************************************************/
///name       : GetKey
//function    : 校验密码
//access      : public
//para        :
//         1. : const std::string &strdata
//            : 参与密码校验的值
//return      : 校验后值
//author      : hzh
//date        : 2005-04-21
/*******************************************************************/
const std::string GetKey(const std::string &strdata)

 std::string result = "";
 if(strdata == "")
 {
  return result;
 }

 //动态加载 dll,并调用里面的 函数
 HINSTANCE DllInst = LoadLibrary("codekey.dll" );
 if( DllInst == NULL )
 {
  throw std::exception( "无法引导动态库 codekey.dll" );
 }
 
 //函数指针 CodeKey,保证和 dll 中需要调用的函数申明一致
 char * ( __stdcall * CodeKey)(const char *) = NULL;
 try
 {
  //指向 dll 中函数地址
  CodeKey = (char* ( __stdcall* )(const char * ))
   GetProcAddress(DllInst,"CodeKey");
  if(CodeKey)
  {
   //函数指针调用 dll 函数
   result = CodeKey(strdata.c_str());
  }
  else
  {
   throw std::exception("编译密码出错");
  }
 }
 catch( ... )
 {
  throw std::exception( "调用动态库codekey.dll出错!" );
 }
 //释放库
 FreeLibrary(DllInst);

 return result;
}

C#用委托调用C++写的dll里面的函数指针

程序想实现的功能是:C++封装
  • jichao1010
  • jichao1010
  • 2014年05月05日 15:25
  • 2027

传递函数指针到DLL函数中去的示例

  • 2009年04月20日 00:40
  • 2.43MB
  • 下载

只有dll的情况下如何动态调用里面的类成员函数

因为项目的需求需要在后台接口中调用项目方提供的dll加解密库,根据已知信息不知道dll里面封装使用了什么算法所以只能硬生生的调用dll里面的函数来进行加解密,如果后台接口使用java编写的话可以通过直...
  • heyanbo98
  • heyanbo98
  • 2016年11月08日 11:47
  • 762

C++全局函数的dll,C++动态调用。

1、项目结构 其实很简单,只要将CDLL.c文件的后缀改为.cpp即可。 2、 CDLL.h内容:#ifndef __CDLL_H__ #define __CDLL_H__ extern "...
  • wodownload2
  • wodownload2
  • 2016年12月15日 10:08
  • 323

回调函数(__stdcall)

2 过程语言中的回调(C) 2.1 函数指针 回调在C语言中是通过函数指针来实现的,通过将回调函数的地址传给被调函数从而实现回调。因此,要实现回调,必须首先定义函数指针,请看下面的例子: ...
  • songshu5555
  • songshu5555
  • 2015年07月15日 16:34
  • 785

总结一下DLL函数声明的一些问题

有关DLL的问题很多,很多人写DLL时经常出现调用程序无法找到相关的导出函数的问题,其实主要的原因是DLL在声明时出的问题。  在这里主要有两个问题,一个是调用约定的问题,一个是函数名修饰的问题,而...
  • wangwenjing90
  • wangwenjing90
  • 2013年06月07日 15:29
  • 5691

DLL导出函数

DLL的链接方式分为两种:隐式链接和显式链接 DLL导出的函数 和 导出类在调用时,有些区别,这里暂时不讲,直说简单的导出函数; 隐式链接: #include "stdafx.h" #incl...
  • qq_25867649
  • qq_25867649
  • 2017年01月03日 11:25
  • 248

更方便地动态调用DLL导出函数(VC++)

Submitted by 李马 您可以任意转载这篇文章,但请在转载时注明原始链接和作者,谢谢。 在一般情况下,动态调用DLL导出函数的方法是: 用typedef为目标函数定义函数指针类型。用Get...
  • binnygoal
  • binnygoal
  • 2014年03月10日 16:38
  • 1451

unity中调用dll(char*,以及带有函数指针的参数)方法总结

dllImport是System.Runtime.InteropServices命名空间下的一个属性类,因此ASP.NET中要使用DllImport的,必须在先“using System.Runtim...
  • zjw1349547081
  • zjw1349547081
  • 2017年04月18日 16:21
  • 903

DLL中导出函数的两种方式

DLL中导出函数的两种方式(dllexport与.def文件)(2009-03-06 11:34:58) 标签:dll 导出函数 两种方式 __declspec dllexport .def 文件 i...
  • yushiqiang1688
  • yushiqiang1688
  • 2010年01月17日 20:49
  • 38742
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:通过函数指针动态调用 dll 中的函数
举报原因:
原因补充:

(最多只允许输入30个字)