`

使用动态链接库

    博客分类:
  • c++
 
阅读更多
1.先创建一个动态链接库的工程
vs下,file->new project->win32 project->DLL

T.h
#ifdef MYAPI_EXPORT
	#define MYAPI _declspec(dllexport)
#else
	#define MYAPI _declspec(dllimport) 
#endif

MYAPI int fun();

#define MYAPI_EXPORT

class TestClass{
public:
	MYAPI int fun1();
	int fun2();
};


T.cpp
// T.cpp : Defines the exported functions for the DLL application.
//

#include "stdafx.h"
#include "T.h"

int fun()
{
	return 10;	
}

int TestClass::fun1()
{
	return 100;
}

int TestClass::fun2()
{
	return 200;
}


然后再创建一个普通的工程,在使用时include T.h就可以在程序中使用export出的函数或类了
#include "stdafx.h"
#include "T.h"//我把上面的T.h拷到这个工程下了
#include <iostream>
using namespace std;

int main()
{
	cout << fun() << endl;
	TestClass tc;
	cout << tc.fun1() << endl;
	//cout << tc.fun2() << endl; //fun2没有导出不能使用,如果将整个类导出则可以用
}


T.h
#ifdef MYAPI_EXPORT
	#define MYAPI _declspec(dllexport)
#else
	#define MYAPI _declspec(dllimport) 
#endif

MYAPI int fun();

#define MYAPI_EXPORT

class MYAPI TestClass{
public:
	int fun1();
	int fun2();
};

要让上面的能跑起来,需要将第一个工程生成的lib,dll拷贝到当前目录下,然后在Linker->Input->Additional Dependencies中加上T.lib这个引入库

2.如果想要动态加载,则需要调用LoadLibrary,在此就不讲了.

_stdcall
http://blog.csdn.net/chinabeet/article/details/3096499
remove 下划线
http://www.willus.com/mingw/yongweiwu_stdcall.html
def文件
http://www.360doc.com/content/11/0304/11/4573246_97992358.shtml
http://www.mytju.com/classcode/news_readNews.asp?newsID=345

关于_stdcall去下划线的问题总结一下
在vs2008下有2种方法
1.根据depends查看的函数名,比如说add(),
加上#pragma comment(linker,"/EXPORT:add=_add@0")就可以了,我生成的是_add@0
2.增加def文件linker->input->Module Define File加上你的def
具体内容,我的是这样的
LIBRARY   testDll2
EXPORTS
add
add1

在Qt中第一种方法同样可用,第二种需要在pro里面加上
DEF_FILE += ***.def//***为你的文件名,当然路径得设对,我的就是和源码在同一目录
分享到:
评论

相关推荐

    linux创建和使用动态链接库.so文件

    ### Linux 创建和使用动态链接库 .so 文件 在 Linux 系统中,动态链接库(Dynamic Link Library,简称 DLL)通常以 `.so` 文件的形式存在,即 Shared Object 文件。动态链接库可以被多个程序共享使用,有助于减少...

    c#创建Dll动态链接库、C#使用动态链接库实用.pdf

    "C#创建DLL动态链接库、C#使用动态链接库实用" C#创建DLL动态链接库是指使用C#语言创建一个动态链接库,用于封装代码和保护源代码。动态链接库是一种特殊的库文件,它可以在多个应用程序中使用,具有很高的可重用性...

    Linux下使用动态链接库和静态链接库的项目建立及单步调试

    ### Linux下使用动态链接库和静态链接库的项目建立及单步调试 #### 一、动态链接库的建立和单步调试 ##### 1.1 编写用户接口文件 `datetime.h` 首先,创建了一个头文件`datetime.h`,该文件定义了两个结构体:`...

    Qt 使用动态链接库例子

    在Qt中使用动态链接库可以实现模块化开发,提高代码重用率,并降低应用程序的体积。 本例主要展示了如何在Qt项目中创建和使用动态链接库。首先,我们需要理解Qt动态链接库的创建过程: 1. **创建动态链接库项目**...

    LINUX下简单的编译和使用动态链接库

    LINUX 下简单的编译和使用动态链接库 在 LINUX 下,编译和使用动态链接库是一项非常重要的技术。动态链接库,即 Shared Object(.so 文件),是将一些常用的代码,例如函数、类等,编译成一个独立的文件,供其他...

    vc使用动态链接库和API编程

    vc使用动态链接库和API函数编程。以文档ppt形式变现。

    C#计算数学表达式,使用动态链接库

    本项目“C#计算数学表达式,使用动态链接库”聚焦于如何利用C#编程语言构建一个能够解析和计算数学表达式的应用程序,同时借助DLL来实现这一功能。 首先,我们来详细了解一下动态链接库。DLL文件包含了可执行代码和...

    VC2005创建和使用动态链接库

    在Microsoft Visual Studio 2005 (VC2005)中创建和使用动态链接库(DLL)是一项常见的任务,这对于代码复用和模块化软件设计至关重要。动态链接库允许多个程序共享同一份代码,从而节省内存和磁盘空间。 **动态链接库...

    动态链接库的使用

    本文将详细介绍如何在Visual C++环境下创建和使用动态链接库。 #### 二、创建动态链接库 假设我们已经创建了一个名为`t1.dll`的动态链接库,并且系统自动生成了`t1.lib`文件。这个`.lib`文件是链接器所需的导入库...

    linux动态链接库的开发实例

    本教程将通过一个实例深入探讨Linux下C/C++语言如何开发和使用动态链接库。 一、动态链接库基础 动态链接库与静态链接库(.a文件)的主要区别在于,静态链接库在编译时会将库中的代码合并到可执行文件中,而动态...

    linux下动态链接库的使用方法

    使用动态链接库的步骤可以分为初级用法和高级用法。初级用法主要涉及如何在应用程序中调用动态链接库中的函数,而高级用法则是如何让系统共享动态链接库,使得多个程序可以同时使用同一份库文件。 初级用法涉及到...

    VC++2010中创建和使用动态链接库dll

    在VC++2010中创建和使用动态链接库(DLL)是一项常见的编程任务,它允许我们编写可重用的代码模块,这些模块可以在多个应用程序之间共享,从而提高效率和代码复用。下面将详细解释如何创建DLL以及如何在其他项目中...

    用devc++制作动态链接库

    动态链接库(Dynamic Link Library,简称DLL)是一种在Windows操作系统下广泛使用的共享库格式。它允许程序和其他模块共享代码和数据,从而提高了软件开发的效率并减少了内存占用。本文将详细介绍如何使用Dev-C++这...

    创建和使用动态链接库范例

    我们将创建的第一种类型的库是动态链接库 (DLL)。使用 DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。 本...

    创建和使用动态链接库 (C++)C#调用

    动态链接库(Dynamic Link Library,DLL)是Windows操作系统中一种共享代码的方式,它允许多个程序同时使用同一块内存空间中的代码,从而节省系统资源并提高效率。C++和C#都是广泛使用的编程语言,C++可以创建DLL,...

    vs2010 如何让创建和使用动态链接库(dll)

    一、创建动态链接库项目: 1、打开Microsoft Visual Studio 2010,选择File-&gt;New-&gt;Project。 2、在New Project中选择Installed Templates-&gt;Visual C++-&gt;Win32。 3、选择Win32 Console Application,设置名称:...

    动态链接库的基础教程

    动态链接库的创建涉及到导出函数、类或其他资源的定义,而使用动态链接库则需要导入这些导出项。 1. **创建动态链接库** - 使用Visual C++创建一个新的DLL项目。 - 定义要导出的函数或类,并使用特定的关键字(如...

    Fortran语言的动态链接库的开发及应用

    动态链接库的使用是指在各种编程语言环境中调用该动态链接库中的各种子程序或子例程。动态链接库有隐式和显式两种装载方式,各有优缺点。采用隐式则需要较少的编码,装载快速、可靠,但缺乏控制,影响动态使用,资源...

    linux动态链接库示例

    总结来说,"linux动态链接库示例"是一个关于如何在Linux环境下使用C语言创建、编译和使用动态链接库(`.so`文件)的过程。通过理解这些步骤,开发者能够更好地管理和利用系统资源,提高软件的复用性和维护性。

Global site tag (gtag.js) - Google Analytics