精华内容
下载资源
问答
  • 导出 DLL 函数

    2011-05-06 09:12:00
    导出 DLL 函数 要导出 DLL 函数,您可以向导出DLL 函数中添加函数关键字,也可以创建模块定义文件 (.def) 以列出导出DLL 函数。 方法一、向导出的 DLL 函数中添加函数关键字 要使用函数关键字,您必须使用...

     

     
    导出 DLL 函数

      要导出 DLL 函数,您可以向导出的 DLL 函数中添加函数关键字,也可以创建模块定义文件 (.def) 以列出导出的 DLL 函数。

      方法一、向导出的 DLL 函数中添加函数关键字

      要使用函数关键字,您必须使用以下关键字来声明要导出的各个函数:

      __declspec(dllexport) 

      要在应用程序中使用导出的 DLL 函数,您必须使用以下关键字来声明要导入的各个函数:

      __declspec(dllimport)

      通常情况下,您最好使用一个包含 define 语句和 ifdef 语句的头文件,以便分隔导出语句和导入语句。

      方法二、创建模块定义文件 (.def) 以列出导出的 DLL 函数

      使用模块定义文件来声明导出的 DLL 函数。当您使用模块定义文件时,您不必向导出的 DLL 函数中添加函数关键字。在模块定义文件中,您可以声明 DLL 的 LIBRARY 语句和 EXPORTS 语句。

      关于特定情况下的调用,比如DLL函数中使用到了win32 API或者将C++生成的DLL供标准C语言使用,则需要注意以下一些情况:

      如果使用到了win32 API,则应该使用调用方式为“__stdcall”。

      在将C++生成的DLL供标准C语言使用,输出文件需要用“extern "C"”修饰,否则不能被标准C语言调用。如果使用“__stdcall”调用方式,可能产生C不识别的修饰名,所以设置导出函数时要采用.def文件形式,而不是__declspec(dllexport)形式。后者会进行修饰名转换,C语言无法识别函数。

      下面的代码是一个定义文件的示例。

      // SampleDLL.def

      //

      LIBRARY "sampleDLL"

      EXPORTS

      HelloWorld

      示例 DLL 和应用程序

      在 Microsoft Visual C++ 6.0 中,可以通过选择“Win32 动态链接库”项目类型或“MFC 应用程序向导 (dll)”来创建 DLL。

      下面的代码是一个在 Visual C++ 中通过使用“Win32 动态链接库”项目类型创建的 DLL 的示例。

      // SampleDLL.cpp

      //

      #include "stdafx.h"

      #define EXPORTING_DLL

      #include "sampleDLL.h"

      BOOL APIENTRY DllMain( HANDLE hModule, 

      DWORD ul_reason_for_call, 

      LPVOID lpReserved

      )

      {

      return TRUE;

      }

      void HelloWorld()

      {

      MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"), MB_OK);

      }

      // File: SampleDLL.h

      //

      #ifndef INDLL_H

      #define INDLL_H

      #ifdef EXPORTING_DLL

      extern __declspec(dllexport) void HelloWorld() ;

      #else

      extern __declspec(dllimport) void HelloWorld() ;

      #endif

      #endif

      下面的代码是一个“Win32 应用程序”项目的示例,该示例调用 SampleDLL DLL 中的导出 DLL 函数。 

      // SampleApp.cpp 

      //

      #include "stdafx.h"

      #include "sampleDLL.h"

      int APIENTRY WinMain(HINSTANCE hInstance,

      HINSTANCE hPrevInstance,

      LPSTR lpCmdLine,

      int nCmdShow)

      { 

      HelloWorld();

      return 0;

      }

      注意:在加载时动态链接中,您必须链接在生成 SampleDLL 项目时创建的 SampleDLL.lib 导入库

      在运行时动态链接中,您应使用与以下代码类似的代码来调用 SampleDLL.dll 导出 DLL 函数。 

      ...

      typedef VOID (*DLLPROC) (LPTSTR);

      ...

      HINSTANCE hinstDLL;

      DLLPROC HelloWorld;

      BOOL fFreeDLL;

      hinstDLL = LoadLibrary("sampleDLL.dll");

      if (hinstDLL != NULL)

      {

      HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");

      if (HelloWorld != NULL)

      (HelloWorld);

      fFreeDLL = FreeLibrary(hinstDLL);

      }

     

    展开全文
  • delphi遍历导出dll函数名的源代码……………………………………………………………………………………
  • DEF文件中导出DLL函数

    2011-10-21 10:26:00
    步骤一:创建DLL工程,在.cpp文件中写好函数 步骤二:创建DEF文件,输入如下 ... DESCRIPTION ff313976 EXPORTS  CreateInstance @2 ...Createinstance为需要导出的函数名 ...步骤三:用dumpbin导出DLL

    步骤一:创建DLL工程,在.cpp文件中写好函数

    步骤二:创建DEF文件,输入如下

    LIBRARY dllcom1.dll

    DESCRIPTION ff313976

    EXPORTS
     CreateInstance @2

    Createinstance为需要导出的函数名

    步骤三:用dumpbin导出DLL

     

    展开全文
  • 导出dll函数到txt中

    千次阅读 2012-08-28 14:29:56
    1. depends 2. 命令行: dumpbin.exe /EXPORTS mydll.dll ...命令行: dumpbin.exe /exports C:\\windows\\system32\\gdi32.dll > c:\\gdi32.txt ...将Gdi32.dll导出函数输出奥c:\\gdi32.txt文件中
    1. depends


    2. 命令行: dumpbin.exe /EXPORTS mydll.dll


    示例: 
    命令行: dumpbin.exe /exports C:\\windows\\system32\\gdi32.dll > c:\\gdi32.txt
    将Gdi32.dll导出的函数输出奥c:\\gdi32.txt文件中
    展开全文
  • 导出DLL函数的3种方式

    2016-08-09 12:00:05
    1. 源代码中的 __declspec(dllexport) 2. .def 文件中的 EXPORTS 语句 3. LINK 命令中的 /EXPORT 规范 #pragma comment(linker,"/export:GetResult=_GetResult@8") 总结: 1.用.def 方式导出动态库 ...
    1.    源代码中的 __declspec(dllexport)


    2.    .def 文件中的 EXPORTS  语句


    3.    LINK 命令中的 /EXPORT  规范  #pragma comment(linker,"/export:GetResult=_GetResult@8")


    总结:
    1.用.def 方式导出动态库 ,动态库的名字都为.def文件中定义的名称
    2.用第三种只是将函数变了一下名字,并且导出。其实指向的是相同的地址。
    3.用第一种方式导出,主要要加extern "C" ,不然会按照C++的风格来命名函数。


    C风格里面的__stdcall调用约定的命名规则为 _函数名@参数占用的字节数


    函数可以声明多次,如果没有调用这个函数可以不实现,但是如果调用了就必须实现




    报警告
    1>d:\projects\testdll\testdll\testdll.cpp(6): warning C4273: “GetResult”: dll 链接不一致
    1>          d:\projects\testdll\testdll\testdll.h(10) : 参见“GetResult”的前一个定义


    没有定义 __declspec(dllexport)



    展开全文
  • CMakeLists.txt project(virtual) # ...add_library(virtual SHARED virtual.cpp) # 创建动态连接库 libvirtual.dll add_executable(main main.cpp) # 创建运行程序 main.exe target_link_libraries(main vir...
  • [Win32]用#pragma comment导出DLL函数

    千次阅读 2009-11-09 12:29:00
    我们知道导出DLL有两种常用的方法,一种是用DEF文件,另一种是通过__declspec( dllexport )。关于这两种方法的文章到处都有,所以不在这里多说了。而有时候我们会碰到一些情况需要用宏来控制是否需要导出这个函数,...
  • 1. 使用__declspec(dllexport) Header File#ifdef WINHOOKLIB_EXPORTS #define WINHOOKLIB_API __declspec(dllexport) #else #define WINHOOKLIB_API __declspec(dllimport) #endif BOOL WINHOOKLIB_API Set...
  • 在win32sdk / c 命令行下用__declspec(dllexport)导出函数名字和全局变量.
  • DLL函数导出的集合转发给DLL导出函数代理。 典型的用例是用于持久性目的的后门应用程序。 例如: 使用procmon检查您想要后门的目标应用程序,查看它通过静态IAT加载了哪些DLL。 您可以清楚地看到这一点,因为应用...
  • 导出dll函数定义

    千次阅读 2014-09-22 22:30:28
    导出dll函数定义
  • SuperDllHijack 一种通用Dll劫持技术,不再需要手工导出Dll函数接口了
  • 查看DLL 导出函数

    2009-09-15 10:33:30
    查看DLL 导出函数 程序 查看DLL 导出函数 程序 查看DLL 导出函数 程序
  • DLL函数导出类型

    2014-12-29 10:09:34
    经常使用VC6的Dependency查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系。 VC++支持两种语言:即C/C++,这也是造成DLL导出...
  • DLL 导出函数

    2017-02-16 13:45:00
    DLL导出函数导出类在调用时,有些区别,这里暂时不讲,直说简单的导出函数; 隐式链接: #include"stdafx.h" #include"MathDLL.h" #pragmacomment(lib,"MathDLL.lib")//你也可以在项目属性中设置库...
  • DLL导出函数

    2017-01-03 11:25:08
    DLL导出函数导出类在调用时,有些区别,这里暂时不讲,直说简单的导出函数; 隐式链接: #include "stdafx.h" #include "MathDLL.h" #pragma comment(lib, "MathDLL.lib&...
  • dll 导出函数转发

    2021-03-19 23:47:05
    有时候我们导出dll仅仅想导出一些函数声明,然后有其他dll进行实现,我们成这里导出声明为:导出函数转发 https://docs.microsoft.com/en-us/cpp/preprocessor/comment-c-cpp?view=msvc-160 # pragram comment
  • 导出函数 _declspec(dllexport) int function() ...引用Dll函数声明 _declspec(dllimport) int function() 解决不同编译器名字改编的问题 在定义导出函数时加上 extern "C" (大写C),如 extern "C" _declspec(dl...
  • dll 导出函数

    2017-03-14 22:33:16
    今天在帮同事弄DLL导出函数的时候,发现一个问题,因为他之前的函数有重载,我原计划希望他原来所有的函数都不动, 而重载的函数都新建一个函数代替使用到,这样既保持了向下兼容向上扩展,例子如下: void Func1(int )...
  • VC++ DLL 导出函数

    2017-11-13 17:02:16
    经常使用VC6的Dependency查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系。 VC++支持两种语言:即C/C++,这也是造成DLL导出...
  • 为什么用dumpbin导出dll函数导出表的序数不是连续的,中间空缺的序数代表什么含义?
  • dll导出函数

    2016-04-07 21:03:48
    dll导出函数 #pragma once #include "stdafx.h" #ifdef API_EXPORT #define DLL_EXPORT extern "C" __declspec(dllexport) #define DLL_EXPORT_CLASS __declspec(dllexport) #else #define DLL_EXPORT extern "C...
  • 查看dll导出函数 查看dll导出函数 查看dll导出函数查看dll导出函数
  • ntdll.dll导出函数统计

    2018-05-14 22:21:00
    主要记录ntdll.dll导出的所有函数。可以查看所有导出函数
  • def文件 导出dll重载函数

    千次阅读 2015-09-09 20:38:36
    转载地址:... 动态链接库DLL_Sample.dll DLL_Sample.h: #ifdef TEST_API # define TEST_API _declspec(dllexport) #else # define TEST_API _decls
  • DLL导出函数

    千次阅读 2015-11-12 17:25:27
    今天想调用一个dll,GetProcAddress返回值...经常使用VC6的Dependency查看DLL导出函数的名字,会发现有DLL导出函数的名字有时大不相同,导致不同的原因大多是和编译DLL时候指定DLL导出函数的界定符有关系。 VC++支持两
  • C++函数导出dll

    2018-01-20 14:34:58
    dll.h #ifdef DLL_API #else #define DLL_API _declspec(dllimport) #endif // DLL_API DLL_API void RightsDeclare(); DLL_API void SayHello(); dll.cpp #define DLL_API _declspec(dllexport) #include"dll.h

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,081
精华内容 2,032
关键字:

导出dll函数