zoukankan      html  css  js  c++  java
  • 使用vs2019编写dll并调用

    1.创建DLL

    新建头文件(DLL1.h)声明dll包含的函数SayHello()
    #pragma once
    #include <iostream>
     
    extern "C" __declspec(dllexport) void SayHello();

    编辑后如图

    新建类(DLL1.cpp),编写函数
    #include "pch.h"
    #include "DLL1.h"
    #include <string>
    using namespace std;
    void SayHello()
    {
        std::cout << "Hello!你成功了!" << std::endl;
    }

    文件位置

    生成解决方案
    dll路径为 E:\code\injectDLL\Dll1\Debug\Dll1.dll

    2.创建C++工程并配置

    创建C++工程TestDLL来调用dll
    添加源文件TestDLL.cpp
    将上一步生成的Dll1.dll和Dll1.lib复制到TestDLL.cpp的同目录下,才能调用
    同时因为复制来的lib用到了头文件DLL1.h所以也要一并复制过来
    头文件还要再导入现在的工程才会被引用,右键头文件- “添加”–>“现有项”
    导入完成
    3.编写调用代码
    首先修改“Dll1.h”头文件中的代码:
    #pragma once
    #include <iostream>
     
    extern "C" __declspec(dllexport) void SayHello();
    改为
    #pragma once
    #pragma comment(lib,"Dll1.lib")
    #include <iostream>
     
    extern "C" __declspec(dllimport) void SayHello();
    #pragma comment(lib,"Dll1.lib")表明引用Dll1.lib
    dllexport用来声明导出函数,导出一个dll给别人用
    dllimport声明一个导入函数,将别人dll导入来自己用
     
    编辑TestDLL.cpp代码调用DLL
    #include "DLL1.h"
    int main()
    {
           SayHello();
    }
    编译测试
    调用成功
  • 相关阅读:
    BZOJ 2212/BZOJ 3702
    BZOJ 4761 Cow Navigation
    BZOJ 3209 花神的数论题
    BZOJ 4760 Hoof, Paper, Scissors
    BZOJ 3620 似乎在梦中见过的样子
    BZOJ 3940 Censoring
    BZOJ 3942 Censoring
    BZOJ 3571 画框
    BZOJ 1937 最小生成树
    BZOJ 1058 报表统计
  • 原文地址:https://www.cnblogs.com/Archimedes/p/14781990.html
Copyright © 2011-2022 走看看