VS2013创建并使用DLL

转载:https://blog.csdn.net/weixin_39345003/article/details/80782218

 

1.DLL文件

DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型。在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件被称为共享DLL文件。

2.创建DLL项目

创建win32应用控制台程序,取名为mydll,点击DLL选项。

新建goods.h 和goods.cpp 文件

goods.h

#pragma once  
  
#ifdef MYDLL_EXPORTS    
#define MYDLL_API __declspec(dllexport)    
#else    
#define MYDLL_API __declspec(dllimport)    
#endif   
  
#include <iostream>  
#include <string>  
  
using namespace std;  
  
class MYDLL_API GOODS  
{  
public:  
    GOODS::GOODS();  
    GOODS::~GOODS();  
  
    int setname(string name);  
  
    int setnum(int num);  
  
    int setperunit(int perunit);  
  
    int printinfo();  
  
    int getcost();  
  
private:  
    string m_name;  
    int m_num;  
    int m_perunit;  
};  

goods.cpp

#include "goods.h"  
  
GOODS::GOODS()  
{}  
  
GOODS::~GOODS()  
{}  
  
int GOODS::setname(string name)  
{  
    m_name = name;  
  
    return 0;  
}  
  
int GOODS::setnum(int num)  
{  
    m_num = num;  
    return 0;  
}  
  
int GOODS::setperunit(int perunit)  
{  
    m_perunit =perunit;  
    return 0;  
}  
  
int GOODS::printinfo()  
{  
    cout <<"name: " << m_name << endl;  
    cout << "num: " << m_num << endl;  
    cout << "perunit: " << m_perunit << endl;  
  
    return 0;  
}  
  
int GOODS::getcost()  
{   
    int cost = m_num*m_perunit;  
    return cost;  
}  

 

 

项目源文件下添加.def文件。添加方法:添加—新建项—代码—模块定义文件。
最后生成解决方案,编译成功后可以在debug文件夹下发现mydll.dll和mydll.lib文件。
3.调用DLL项目

新建一个win32控制台的空项目,取名usemydll,然后引用dll步骤如下:

1.项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件goods.h所在的目录 

2.项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件mydll.lib所在的目录 

3.项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“mydll.lib”

4.将dll项目下的debug文件中的mydll.dll复制到当前项目的debug文件夹中

新建添加main.cpp文件

main.cpp

#include "goods.h"  
  
int main()  
{  
    GOODS book;  
  
    book.setname("book");  
  
    book.setnum(2);  
  
    book.setperunit(10);  
  
    book.printinfo();  
  
    cout << "cost: "<<book.getcost() << endl;  
  
    return 0;  
}  

posted @ 2020-08-19 20:47  _KikyoBK  Views(325)  Comments(0Edit  收藏  举报