博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Visual Studio下建立并隐式调用自己的动态链接库dll
阅读量:5917 次
发布时间:2019-06-19

本文共 2329 字,大约阅读时间需要 7 分钟。

http://blog.sina.com.cn/s/blog_6e0693f70100sn4a.html

 

A. 创建第一个解决方案和相应项目(DLL),生成.dll(动态库)和.lib(静态库)文件;

B. 创建第二个解决方案和相应项目(User),设置“附加包含目录”和“附加库目录”,分别指向第一个解决方案中各项目的.h文件目录和.lib文件目录;

C. 设置User项目的Linker -> Input -> Additional Dependencies,添加.lib文件;

D. 生成User项目,并确定.dll文件与当前生成的.exe文件在同一个目录中。

 

I. 生成.dll文件时用__declspec(dllexport)导出.lib文件(导入库文件),或设置项目属性为静态库项目单独生成的.lib文件;

  但两种.dll文件是不相同的。

II. visual studio中使用动态库需要:.h文件,.dll文件,.lib文件(gcc中使用动态库需要:.h文件,.so文件(相当于.dll));

  使用.dll文件时可以用随.dll一起生成的.lib文件,也可以使用静态库项目生成的.lib文件。

 

在工程或科研中,我们经常要使用自己编写的函数库。比较直接的方法是,我们可以在每个工程中把相应的头文件和源代码文件增添进去(Project -> Add Existing Item),但这样比较麻烦。尤其当自己的函数库包含众多文件是,这个方法非常浪费时间。另一种方法是,我们可以把自己的函数库生成dll,使用的时候结合头文件来调用。这样省时省力。本文主要描述了后者的实现与使用过程。

 

  1). 首先创建自己的dll项目。打开Visual Studio,新建一个Win32 Console Application,项目名为ZWang_library。
   2). 在Application Setting中,选择DLL和Empty Project。
   3). 添加头文件ZWang_library.h,内容后附。
   4). 添加源文件ZWang_library.cpp,内容后附。
   5). 在project -> ZWang_library properties -> Configuration Properties -> General -> Configuration Type中选择Dynamic Library (.dll)
   6). 编译ZWang_library,生成dll和lib
   7). 然后创建另一个Win32 Console Application项目,这个项目将调用生成的dll文件。这里项目名为ZWang_calldll
   8). ZWang_calldll.cpp内容见后附。
   9). 在project -> ZWang_calldll properties -> Configuration Properties -> C++ -> General -> Additional Include Directories中添加ZWang_library.h的路径。
   10). 在project -> ZWang_calldll properties -> Configuration Properties -> Linker -> General -> Additional Library Directories中添加ZWang_library.lib的路径。
   11). 在project -> ZWang_calldll properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies中添加ZWang_library.lib。
   12). 编译ZWang_calldll,将ZWang_library.dll放到包含ZWang_calldll.exe的文件夹中。运行程序。
代码1 ZWang_library.h
#ifndef _ZWANG
#define _ZWANG
#include <iostream>
#include <string>
namespace ZWANG
{
    using namespace std;
    __declspec(dllexport) void call_from_dll(const string &str = "Call the funtion from dll.");
}
#endif _ZWANG
代码2 ZWang_library.cpp
#include "ZWang_library.h"
namespace ZWANG
{
    void call_from_dll(const string &str)
    {
        cout << str << endl;
        cout << "Success!" << endl;
    }
}
代码3 ZWang_calldll.cpp
#include "stdafx.h"
#include "ZWang_library.h"
using namespace std;
using namespace ZWANG;
int _tmain(int argc, _TCHAR* argv[])
{
    call_from_dll("Hello world!");
    call_from_dll();
    cin.get();
    return 0;
}

转载于:https://www.cnblogs.com/zhangyz/articles/6209925.html

你可能感兴趣的文章
quartz + spring定时任务调度
查看>>
PHP二维数组排序函数
查看>>
Hello,t-io!请多关照
查看>>
DzzOffice结合office web Apps私有部署的实例
查看>>
hibernate.current_session_说明
查看>>
第二章 Spring MVC入门
查看>>
利用Crypto++实现RSA加密算法
查看>>
自己动手写一个印钞机 第七章
查看>>
C4droid 的多文件编译
查看>>
结构体中的vector不能memset为0
查看>>
在 Access 中使用 SQL 建索引
查看>>
C#操作MySql的数据层类MysqlHelper
查看>>
正则匹配行头和行尾
查看>>
CentOS-6.5安装配置Tomcat-7
查看>>
Java与C++之JNI编程小结
查看>>
如何定义command作为服务
查看>>
android导入项目找不R文件,解决方法
查看>>
vm sphere_虚拟硬盘的格式
查看>>
eclipse的git插件获取git.oschina
查看>>
graphael-objc
查看>>