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();
    }
    编译测试
    调用成功
  • 相关阅读:
    MySQL事物原理及事务隔离级别
    sql中in和exists的原理及使用场景。
    PHP实现多继承
    磁盘inode节点被占满的解决方法
    使用uwsgi和gunicorn部署Django项目
    python自学经验,每天进步一点点
    msyql 5.7安装遇到的坑
    shell 三剑客
    nginx 配置
    websphere 新建profile
  • 原文地址:https://www.cnblogs.com/Archimedes/p/14781990.html
Copyright © 2011-2022 走看看