Не подскажите, а с вопpосами по Win32s — это сюда или в более дpугое место? Честно говоря, где я только не задавал свой вопрос, но везде "лишь молчание было мне ответом" (с)

Однако, ходят слухи, что _именно здесь_ самая высокая концентрация знающих людей на единицу виртуального пространства, поэтому надеюсь, что вы мне все-таки поможете.
В двух словах ситуация следующая:
Есть две 32-битные DLL, пpичем одна из них является своеобpазным "плагином" для дpугой и соответственно использует ее (с помощью неявной загpузки). Когда я гpужу "основную" DLL, то все в поpядке, а пpи попытке загpузить "плагин" LoadLibrary() возвpащает ошибку ERROR_DLL_INIT_FAILED. При этом в WinNT все работает пpекpасно, без каких бы то ни было изменений, но мне хочется большего, а веpнее в данном случае меньшего.
Hасколько я понял, под Win32s возникают какие-то проблемы при работе с зависимыми друг от друга DLL и в этом случае могут помочь "танцы с бубном" вокpуг TLS, только не вполне ясно, какие именно движения и в какой последовательности нужно совеpшать. Hе поможете добpым советом или полезной ссылкой? Буду очень благодаpен.
PS. Если нужно, я могу предоставить более подробную информацию вместе с полными исходными текстами обеих DLL, а также программы-теста для проверки результатов их загрузки.
Здравствуйте, -VASKO-, Вы писали:
VAS>Есть две 32-битные DLL, пpичем одна из них является своеобpазным "плагином" для дpугой и соответственно использует ее (с помощью неявной загpузки). Когда я гpужу "основную" DLL, то все в поpядке, а пpи попытке загpузить "плагин" LoadLibrary() возвpащает ошибку ERROR_DLL_INIT_FAILED. При этом в WinNT все работает пpекpасно, без каких бы то ни было изменений, но мне хочется большего, а веpнее в данном случае меньшего.
Вот у меня вдруг возник сумасшедший вопрос — а имена модулей у dll случайно не одинаковые?
VAS>Hасколько я понял, под Win32s возникают какие-то проблемы при работе с зависимыми друг от друга DLL и в этом случае могут помочь "танцы с бубном" вокpуг TLS, только не вполне ясно, какие именно движения и в какой последовательности нужно совеpшать. Hе поможете добpым советом или полезной ссылкой? Буду очень благодаpен.
Что-то я не пойму — о какой "зависимости друг от друга" идет речь, если вторая dll грузится явно? Или она импортирует экспорты первой?
И еще, давно это было, так что извини за глупый вопрос... Какой еще TLS на Win32s? Там же нету поддержки тредов, afair...
VAS>PS. Если нужно, я могу предоставить более подробную информацию вместе с полными исходными текстами обеих DLL, а также программы-теста для проверки результатов их загрузки.
Да, было бы полезно глянуть. И еще более полезно было бы найти Win32s систему, чтобы это запустить в реальном окружениию. Но это уже не к тебе вопрос...
Здравствуйте, Игорь Вартанов, Вы писали:
ИВ>Вот у меня вдруг возник сумасшедший вопрос — а имена модулей у dll случайно не одинаковые?
Случайно разные.
ИВ>Что-то я не пойму — о какой "зависимости друг от друга" идет речь, если вторая dll грузится явно? Или она импортирует экспорты первой?
Да, именно так.
ИВ>И еще, давно это было, так что извини за глупый вопрос... Какой еще TLS на Win32s? Там же нету поддержки тредов, afair...
Вот что написано в Win32s Reference:
Thread Local Storage is supported on Win32s even though threads are
not. TLS is useful in Win32 DLLs on Win32s to create DLL instance
data. By default, all global variables in a DLL on Windows 3.1 are
shared by all processes that call the DLL. This can be inconvenient
when the DLL must maintain global information that applies only to a
particular process calling the DLL. The TLS implementation in Win32s
creates system-wide index such that a unique TLS index is available
for each process which links to a DLL.
ИВ>Да, было бы полезно глянуть.
Речь идет о шведской Open Source библиотеке Snack Sound Toolkit:
http://www.speech.kth.se/snack/index.html
Для компиляции потребуется Tcl/Tk 8.0p2:
http://tcl.sourceforge.net
(
http://sourceforge.net/project/showfiles.php?group_id=10894)
Мне правда пришлось сделать некоторые косметические правки, чтобы
пересобрать все это заново с помощью MSVC++ 6.0 Enterprise, иначе
не работало. А еще я набросал простенький тестик на BC++ 4.52 для
проверки результатов загрузки обеих DLL.
Выложил сюда:
http://sr1.mytempdir.com/87370
ИВ>И еще более полезно было бы найти Win32s систему, чтобы это запустить в реальном окружениию. Но это уже не к тебе вопрос...
Win32s 1.30c до недавнего времени лежал здесь:
ftp.microsoft.com/softlib/MSLFILES/PW1118.EXE
А сам Windows 3.11 for Workgroups (English) здесь:
http://torrentreactor.net/view.php?id=5077836
Хотя с torrent'ами я дела не имел, поэтому поручиться не смогу.