首页
社区
课程
招聘
[已解决] [求助]C dll调用cryptlib.lib, 有没有办法把cryptlib.lib直接嵌入到dll的资源里? 10雪币
发表于: 2025-9-6 20:45 697

[已解决] [求助]C dll调用cryptlib.lib, 有没有办法把cryptlib.lib直接嵌入到dll的资源里? 10雪币

2025-9-6 20:45
697

如题, 在vs2022里新建一个空白dll,然后静态引用cryptlib.lib来实现调用md5方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "core.h"
#include <md5.h>
 
using namespace std;
using namespace CryptoPP;
 
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#define MD5_CRYPT_LEN 16  // 16代表32字节
 
using namespace CryptoPP;
 
 
#define CRYPTOPP_ENABLE_NAMESPACE_WEAK 1
#define MD5_CRYPT_LEN 16  // 16代表32字节
 
inline std::string encode_md5(const std::string& data)
{
    //计算MD5 digest hash
    CryptoPP::MD5 hash;
    CryptoPP::byte digest[CryptoPP::MD5::DIGESTSIZE];
    hash.CalculateDigest(digest, (CryptoPP::byte*)data.c_str(), data.size());
 
    // 将md5 digest转换成hex string 格式
    std::string res;
    CryptoPP::HexEncoder encoder;
    encoder.Attach(new CryptoPP::StringSink(res));
    encoder.Put(digest, sizeof(digest));
    encoder.MessageEnd();
 
    return res;
}
 
void md5_test()
{
    string s2 = encode_md5("hello world");
    fmt::println("s2:{}", s2);
}
 
int main(int argc, char* argv[])
{
     
    md5_test();
     
 
    return 0;
}

crypto库路径为

D:\CppLibrary\cryptopp890\x64\Output\Debug

这是静态引用crypto的方式, 我想问的是, 是否能将 cryptlib.lib 嵌入到dll的资源里?然后在调用时,动态的加载 cryptlib.lib ? 这样在发布时,就不会忘记或拷贝错 cryptlib.lib 这个文件。


传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 309
活跃值: (4996)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
什么乱七八糟的,.lib的库,无论是导入库还是静态库,编译之后都是不需要在附带的。
2025-9-8 22:44
0
雪    币: 309
活跃值: (4996)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
当然,如果是导入库,需要附带被导入的.dll
2025-9-8 22:45
0
雪    币: 4925
活跃值: (6313)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
内存加载DLL就行了   MT编译呗也可以
2025-10-6 11:08
0
雪    币: 2867
活跃值: (12207)
能力值: (RANK:385 )
在线值:
发帖
回帖
粉丝
5
编译为静态库 mt方式 如果是debug就编译为mtd方式 直接用就行 发布不用带静态库,如果是dll那么就要带dll因为代码都在dll里面 windows基础知识去了解下 静态库和dkk的区别
2025-10-6 11:41
0
游客
登录 | 注册 方可回帖
返回