Вставить строки как ресурс - PullRequest
1 голос
/ 28 апреля 2011

Я пишу DLL и хочу после компиляции добавить несколько строк в качестве встроенного ресурса.

Для этого я использую скрипт Python, который выглядит аналогичнок следующему:

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

И это, кажется, работает, я вижу строки в PE с моим hex-редактором.

Проблема возникает, когда моя Dll пытается использовать LoadString() чтобы вытащить эту строку обратно.

Вызов выглядит примерно так:

LoadString(myDll, 409, someBuf, lenOfBuf);

И моя программа, похоже, перестает ссылаться на неверный указатель в вызове LoadString().

Моя проблема в том, как я добавляю строку или вытаскиваю ее?И может ли кто-нибудь указать мне пример кода, который выполняет оба шага?

Редактировать : Я бы предпочел использовать для этого Win32 API.

Ответы [ 2 ]

1 голос
/ 28 апреля 2011

Вы можете сделать это вручную, взяв DLL, добавив к ней данные, которые вы хотите сохранить, и после него 4-байтовое целое число, содержащее размер добавляемых данных в байтах.

Теперь, если вы хотите прочитать данные, прочитайте последние 4 байта файла, интерпретируйте их как целое число (следите за порядком байтов) и прочитайте это количество байтов из конца файла (если количество байт - это N, которое вы читаете от END - N - 4 до END - 4).

0 голосов
/ 03 мая 2011

Глупый я, мне просто нужно было использовать структуру STRINGTABLE вместо простого сброса в необработанные строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...