将字符串嵌入为资源

1 投票
2 回答
628 浏览
提问于 2025-04-16 16:35

我正在写一个DLL(动态链接库),想在编译后把一些字符串作为嵌入资源添加进去。

为此,我用了一段Python脚本,差不多是这样的:

hRes = win32api.BeginUpdateResource(myFile, 0)
win32api.UpdateResource(hRes, win32con.RT_STRING, 409, buf, 1033)
win32api.EndUpdateResource(hRes, 0)

这样做似乎有效,我可以在我的十六进制编辑器中看到这些字符串。

但问题出现在我的DLL尝试使用LoadString()把字符串取出来的时候。

调用的方式大概是这样的:

LoadString(myDll, 409, someBuf, lenOfBuf);

结果我的程序在LoadString()调用时似乎在引用一个错误的指针。

我的问题是出在添加字符串的方式上,还是取出字符串的方式上?有没有人能给我指个方向,找一些示例代码来完成这两个步骤?

编辑: 我希望使用Win32的API来实现这个。

2 个回答

1

你可以手动操作,先拿到DLL文件,然后把你想存储的数据加到这个文件后面,接着再加一个4字节的整数,这个整数表示你刚加的数据的大小(以字节为单位)。

如果你想读取这些数据,可以先读取文件最后的4个字节,把它当作一个整数来理解(注意字节顺序),然后根据这个整数的值,从文件的末尾读取相应数量的字节(如果这个字节数是N,你就从 END - N - 4 读取到 END - 4)。

0

真是傻我了,其实我只需要用STRINGTABLE这个结构,而不是直接把原始字符串放进去就行了。

撰写回答