2011-04-28 69 views
1

我正在編寫一個DLL,並且我希望在編譯後向它添加一些字符串作爲嵌入式資源。嵌入字符串作爲資源

爲了做到這一點,我使用的是Python腳本,類似於以下內容:

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

這似乎工作,我可以看到我的十六進制編輯器的PE中的字符串。

當我的Dll嘗試使用LoadString()將該字符串拉回時,會發生此問題。

的調用是這樣的:

LoadString(myDll, 409, someBuf, lenOfBuf); 

而且我的程序出現脫參考在LoadString()調用一個錯誤的指針。

我的問題在於我如何添加字符串或將其拉出?任何人都可以指向我的兩個步驟的示例代碼?

編輯:我寧願爲此使用Win32 API。

回答

0

傻了,我只需要使用STRINGTABLE結構,而不是僅僅在原始字符串中傾倒。

1

您可以手動執行此操作,方法是先取得DLL,將要存儲的數據附加到它上面,然後以4字節整數包含附加數據的大小(以字節爲單位)。

現在,如果要讀取數據,請讀取文件的最後4個字節,將其解釋爲整數(觀看字節順序),然​​後從文件末尾讀取該字節數量(如果數量的字節是N,你從END - N - 4讀到END - 4)。

+0

這肯定會起作用,但由於多種原因,我寧願使用API​​來完成。 – mrduclaw 2011-04-28 15:20:34