当前位置: 首页 > article >正文

C++ DLL DEMO

头文件dlltest.h

#pragma once
#include "pch.h"
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <bitset>


extern "C" __declspec(dllexport) void debugService(uint32_t debugFlags, const std::string& logFileName);

dlltest.cpp

#include "pch.h"
#include "dlltest.h"

#define DEBUG

void logMessage(const std::string& message, uint32_t debugFlags, const std::string& logFileName) {
#ifdef DEBUG
    std::ostream* outStream;
    std::ofstream logFile;

    if (logFileName.empty()) {
        outStream = &std::cout;
    }
    else {
        logFile.open(logFileName, std::ios_base::app);
        if (!logFile.is_open()) {
            std::cerr << "无法打开日志文件。" << std::endl;
            return;
        }
        outStream = &logFile;
    }

    if (debugFlags & 0x04) {
        *outStream << message << std::endl;
    }
    else {
        for (char c : message) {
            *outStream << " 0x" << std::hex << std::setw(2) << std::setfill('0') << static_cast<int>(c);
        }
        *outStream << std::endl;
    }

    if (logFile.is_open()) {
        logFile.close();
    }
#endif
}

__declspec(dllexport) void debugService(uint32_t debugFlags, const std::string& logFileName) {
    std::string inputData = "123456789";
    std::string outputData = "987654321";

    logMessage("输入数据: " + inputData, debugFlags, logFileName);
    logMessage("输出数据: " + outputData, debugFlags, logFileName);
}

main

#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <bitset>
#include "../Dlltest/dlltest.h"


int main() {
    uint32_t debugFlags = 0x00000004; // 设置调试标志
    std::string logFileName = ""; // 空字符串表示标准输出

    debugService(debugFlags, logFileName);

    return 0;
}

输入数据: 123456789
输出数据: 987654321


http://www.kler.cn/a/301418.html

相关文章:

  • Vue3中实现插槽使用
  • Linux 命令 | 每日一学,文本处理三剑客之awk命令实践
  • Gin 框架中的路由
  • 李秀贤主演警匪片《蓝色霹雳火》
  • 计算机网络:运输层 —— TCP的流量控制
  • Pytest从入门到精通
  • 摸鱼 | 图片转Excel单元格脚本
  • 【网易低代码】第2课,页面表格查询功能
  • erlang学习: Mnesia Erlang数据库3
  • misc音频隐写
  • 【深度学习】线性回归的从零开始实现与简洁实现
  • 嵌入式OpenHarmony源码基本原理详解
  • [环境配置]ubuntu20.04安装后wifi有图标但是搜不到热点解决方法
  • laravel 11 区分多模块的token
  • 区块链-P2P(八)
  • 如何禁用公司电脑上的USB接口?这3个妙计锦囊及奉上!【老板的福音!】
  • 坐牢第三十七天(Qt)
  • 影刀RPA实战:自动化同步商品库存至各大电商平台(二)
  • 骨传导耳机哪个品牌好用?良心测评推荐5大高分骨传导耳机!
  • Python | Leetcode Python题解之第393题UTF-8编码验证
  • 大模型LLM之SpringAI:Web+AI(二)
  • Android——service使用详解
  • 快速上手Spring Boot应用
  • Python语言开发学习之使用Python预测天气
  • 二十三种设计模式之建造者模式(类比汽车制造厂好理解一些)
  • sqlite3 相关知识