dlldepend/dll_handle.h
2024-03-08 11:35:52 +08:00

39 lines
1.1 KiB
C++

#pragma once
#include <list>
#include <string>
#include <map>
#include "cmd_opr.h"
struct DllInfo {
int index{};
std::string name{};
std::string full_path{};
};
class DllHandle {
public:
DllHandle() = default;
~DllHandle() = default;
public:
// 读取配置文件
bool read_ini(const std::string& purpose_dir);
// 获取一个二进制文件的依赖(参数为全路径)
std::list<std::string> get_dependents(const std::string& binary);
// 查找配置文件中配置的目录中指定名称的dll的信息
bool find_dll(const std::string& name, DllInfo& info);
// 是否在容器中
static bool is_have(const std::list<DllInfo>& vec, const std::string& name);
// 处理dll复制
static void copy_dll(const std::string& purpose_dir,
const std::list<DllInfo>& tasks);
// 手动筛选多个dll的情况
void handle_multi_dll();
private:
std::list<DllInfo> no_dlls_{};
std::list<DllInfo> exe_dlls_{};
std::map<std::string, std::list<DllInfo>> simple_dlls{};
};