`
leidiqiu
  • 浏览: 135091 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

生成 dll 文件时的函数名字问题

阅读更多
dll 文件中函数名字规则 写道
extern "C" :用于.cpp文件声明不改编

_stdcall :add变为:_add@8
               :add不变

cpp文件没有声明extern "C"
_stdcall :add变为:?add@@YGHHH@Z
               :add变为:?add@@YAHHH@Z


调用:
HINSTANCE hInst;

// hInst=LoadLibrary("lib.dll");
// hInst=LoadLibrary("mylib.dll"); 
hInst=LoadLibrary("mylib1.dll");

// typedef int ( _stdcall *ADDPROC)(int a, int b);
// typedef int ( _stdcall *ADDPROC)(int a, int b); 
typedef int ( *ADDPROC)(int a, int b);

// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"_add@8");
// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"_Java_com_ldq_ExJNI_add@16");
ADDPROC Add=(ADDPROC)GetProcAddress(hInst,"?add@@YAHHH@Z");

// ADDPROC Add=(ADDPROC)GetProcAddress(hInst,MAKEINTRESOURCE(1));
k=Add(i,j);


代码:lib1.c
_declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib1.c
生成:lib1.dll
命令:dumpbin -exports lib1.dll
函数名:_add@8

代码:lib2.c
_declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib2.c
生成:lib2.dll
命令:dumpbin -exports lib2.dll
函数名:add

代码:lib1.cpp
_declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib1.cpp
生成:lib1.dll
命令:dumpbin -exports lib1.dll
函数名:?add@@YGHHH@Z

代码:lib2.cpp
_declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib2.cpp
生成:lib2.dll
命令:dumpbin -exports lib2.dll
函数名:?add@@YAHHH@Z

代码:lib3.cpp
extern "C" _declspec (dllexport) int _stdcall add(int i, int j)
{
return i+j;
}
命令:cl /LD lib3.cpp
生成:lib3.dll
命令:dumpbin -exports lib3.dll
函数名:_add@8

代码:lib4.cpp
extern "C" _declspec (dllexport) int add(int i, int j)
{
return i+j;
}
命令:cl /LD lib4.cpp
生成:lib4.dll
命令:dumpbin -exports lib4.dll
函数名:add

 

分享到:
评论

相关推荐

    各种DLL文件函数查看器

    除了基础的查看功能,一些高级的DLL文件函数查看器可能还具备其他实用特性,如导出函数到文本文件、对比不同版本DLL的函数差异、生成函数调用图等。这些高级功能有助于提升开发效率,增强对DLL的理解。 总的来说,...

    LabVIEW生成dll范例和教程,labview生成dll文件,LabView

    7. **编译与测试**:完成设计后,编译VI生成DLL文件。可以使用LabVIEW自带的测试VI或编写一个简单的调用程序进行测试,确保DLL的功能正确无误。 8. **调用DLL**:在其他编程环境中,如C#或VB.NET,需要使用相应的...

    VS2010 VB如何生成DLL文件,调用DLL

    下面我们将详细探讨如何在VS2010中使用VB.NET生成DLL文件以及如何调用这个DLL。 **生成DLL文件的步骤:** 1. **创建新项目**:启动Visual Studio 2010,选择"文件" > "新建" > "项目"。在项目模板中,选择"Visual ...

    win32命令行用def文件生成dll文件(C语言)

    本篇文章将详细介绍如何使用`def`文件在Win32命令行环境下创建DLL文件,主要针对C语言编程。 首先,`def`文件是一种特殊的文本文件,用于定义DLL的导出函数、版本信息和其他特性。在创建DLL时,`def`文件是不可或缺...

    QT生成DLL库文件的方法和使用方法详解和实例源代码

    概括来说, 要把Qt程序做成dll,刚开始可以像做一般应用程序一样实现你程序的所有功能,然后再做一个接口就OK了。...把pro文件里面的app改成lib,这样之后就能生成Dll文件了。 3、具体实现方法在我的实例里面有。

    DLL文件函数提取器

    DLL文件函数提取器是一个工具,专门用于查看和提取DLL文件中的函数,使得开发者无需了解DLL内部实现细节,就能直接调用所需的函数。 DLL文件的主要作用在于代码复用和节省系统资源。通过将常用功能封装到DLL中,多...

    DLL2PAS Delphi据DLL自动生成PAS文件..rar

    DLL2PAS是一款专为Delphi开发者设计的实用工具,它可以自动分析DLL文件,并生成相应的PAS源代码,使得开发者能够方便地在Delphi程序中导入和使用DLL中的功能。这个过程通常包括以下几个关键步骤: 1. 分析DLL:DLL2...

    C# 生成DLL文件

    下面将详细解释如何在C#中生成DLL文件以及相关的知识点。 1. **项目类型选择** 创建DLL文件首先要创建一个类库项目。在Visual Studio中,可以选择"新建项目",然后在模板列表中找到"C# 类库"或"C# .NET Core 类库...

    Labview生成dll文件的方法

    在LabVIEW中生成DLL文件,可以使得非LabVIEW程序调用LabVIEW编写的函数,实现跨平台的数据处理或功能扩展。 生成DLL文件的过程主要分为以下几个步骤: 1. **创建VI(Virtual Instrument)** 首先,打开LabVIEW并...

    .Net生成dll文件的方法

    在Visual Studio 2008(VS2008)中,创建和生成DLL文件是一项基本操作,适用于开发自定义组件、库或共享代码。以下是一个详细的步骤指南,教你如何在VS2008中生成DLL文件。 1. **新建项目**: - 打开Visual Studio...

    vb6生成DLL

    在VB6(Visual Basic 6...总结来说,VB6生成DLL的关键在于创建ActiveX DLL项目,编写公共函数,编译生成DLL文件,然后在其他项目中添加引用并调用这些函数。熟练掌握这一技术对于提升软件开发效率和代码质量至关重要。

    生成dll范例——轻松掌握dll使用方法

    在本文中,我们将深入探讨如何生成DLL文件,并了解其基本使用方法。 首先,生成DLL文件主要通过编程语言实现,如C++、C#等。以C++为例,我们需要创建一个新的项目,并选择“动态库”(DLL)作为项目的类型。在项目...

    NET 编译生成DLL文件

    .NET 编译生成 DLL 文件是一种常见的开发场景,尤其在创建可复用组件时尤为重要。DLL(动态链接库)文件通常用于封装一组功能相关的类或函数,供其他应用程序调用。在 .NET 开发环境中,可以通过多种方式来创建 DLL ...

    由DLL文件生成LIB文件的工具

    在某些情况下,开发者可能需要从已有的DLL文件生成相应的LIB文件,以便在不直接引用DLL的情况下进行编译和链接。这就是"由DLL文件生成LIB文件的工具"的主题所在。 `GenLibByDll.exe`是一个这样的工具,它能够帮助...

    生成DLL和lib文件测试案例

    - 导入库:当生成DLL时,VS也会创建一个导入库(.lib),它包含了调用DLL所需的信息。 在其他项目中使用这些库,你需要: 1. 将生成的LIB文件添加到项目的“链接器”设置中,作为附加依赖项。 2. 对于DLL,还需要...

    dll文件读取与生成delphi

    生成DLL文件在Delphi中主要涉及以下几个步骤: 1. **创建新工程**:在Delphi中,选择“新建”>“项目”,然后选择“动态链接库(DLL)”模板。这将创建一个新的DLL工程,包含一个默认的单元文件。 2. **定义导出...

    matlab生成DLL并用VC++调用

    本文将详细介绍如何使用MATLAB 2009b生成DLL文件,并使用VC++ 2008进行调用。 #### 二、实验环境配置 **操作系统:** Win7 **MATLAB 版本:** 2009b (安装路径: E:\Program Files\MATLAB\R2009a) **VC++ 版本:** ...

    Delphi函数Dll格式文件生成器 0.006α 2003.06.24

    本工具是一款Delphi开发辅助工具,它可以帮助开发人员把一些常用的工具封装于Dll文件之中,开发人员做的仅仅是选择所需函数=>生成源码=>编译工程文件生成DLL=>在自己的程序中uses即可.现在还属内部测试阶段,请不要用于...

    matlab代码生成转dll给labview例子.rar

    3. 编译项目生成DLL文件,如`myFun.dll`,确保选择与LabVIEW和VeriStand相匹配的架构(32位或64位)。 4. 在LabVIEW中,使用`未命名 1.vi`或其他适当的VI,通过引用DLL调用`myFun`函数。 5. 运行LabVIEW VI,测试...

    labview 生成dll vb调用

    4. **编译和生成DLL**:保存VI后,编译项目生成DLL文件。LabVIEW将自动处理函数导出和相关的C头文件,这些文件将用于VB中的函数声明。 接下来,我们将探讨如何在VB中调用LabVIEW生成的DLL: 1. **导入DLL**:在VB...

Global site tag (gtag.js) - Google Analytics