zoukankan      html  css  js  c++  java
  • visual studio2019下动态链接库的制作

    打开visual studio2019创建动态链接库项目,项目名称为20199324dll

    然后定义宏:在头文件中定义即可,宏的作用的是允许该函数能够被外部访问,并直接调用。代码如下:

    // pch.h: 这是预编译标头文件。
    // 下方列出的文件仅编译一次,提高了将来生成的生成性能。
    // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
    // 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
    // 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
    
    #ifndef PCH_H
    #define PCH_H
    
    // 添加要在此处预编译的标头
    #include "framework.h"
    
    #endif //PCH_H
    
    
    //定义宏
    
    #ifdef IMPORT_DLL
    
    #else
    #define IMPORT_DLL extern "C" _declspec(dllimport) //指的是允许将其给外部调用
    #endif
    
    IMPORT_DLL int add(int a, int b);
    IMPORT_DLL int minus(int a, int b);
    IMPORT_DLL int multiply(int a, int b);
    IMPORT_DLL double divide(int a, int b);
    

    然后在pch.cpp文件中实现这些即可,代码如下:

    // pch.cpp: 与预编译标头对应的源文件
    
    #include "pch.h"
    
    // 当使用预编译的头时,需要使用此源文件,编译才能成功。
    
    int add(int a, int b)
    {
    	return a + b;
    }
    
    int minus(int a, int b)
    {
    	return a - b;
    }
    
    int multiply(int a, int b)
    {
    	return a * b;
    }
    
    double divide(int a, int b)
    {
    	double m = (double)a / b;
    	return m;
    }
    

    接下来是点击生成,会在debug目录下生成20199324dll.dll文件(这就是我们所需要的)

    然后新建一个控制台程序,用于测试是否成功调用dll,命名为20199324dlltest

    引入windows.h(必须);在main函数写下列语句调用dll,代码如下:

    // 20199324dlltest.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
    
    #include <iostream>
    #include<windows.h>
    
    int main()
    {
    	HINSTANCE hDllInst;
    	hDllInst = LoadLibrary(L"20199324dll.dll"); //调用 DLL	
    	typedef int(*PLUSFUNC)(int a, int b); //后边为参数,前面为返回值	
    	PLUSFUNC plus_str = (PLUSFUNC)GetProcAddress(hDllInst, "add");//GetProcAddress为获取该函数的地址	
    	std::cout << plus_str(93,24);
    }
    

    注意:需要把之前生成的dll文件,复制到控制台程序的debug目录下!

    点击本地Windows调试器:

    参考资料:https://blog.csdn.net/Giser_D/article/details/89677441

  • 相关阅读:
    数学(动态规划,GCD):COGS 469. [NOI2010]能量采集
    网络流(二分):BZOJ 3993: [SDOI2015]星际战争
    分治(CDQ):[BOI2007]摩基亚Mokia
    树状数组(二维):COGS 1532 [IOI2001]移动电话
    斜率优化(CDQ分治,Splay平衡树):BZOJ 1492: [NOI2007]货币兑换Cash
    树形结构的维护:BZOJ 3991: [SDOI2015]寻宝游戏
    贪心 uvaoj 11134 Fabled Rooks
    动态规划(模型转换):uvaoj 1625 Color Length
    贪心 BZOJ 3671:[Noi2014]随机数生成器
    字符串(后缀数组):POJ 3415 Common Substrings
  • 原文地址:https://www.cnblogs.com/yangdd/p/11876608.html
Copyright © 2011-2022 走看看