将字符串嵌入为资源
我正在写一个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这个结构,而不是直接把原始字符串放进去就行了。