|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 3, 2003 16:58:32 Приветствую всех воинов и самураев дЗена. При попытке скомпилировать dll, которая вызывает crt функцию wsprintf столкнулся с одной проблемой: линкер говорит следующее: LINK : error LNK2001: unresolved external symbol __DllMainCRTStartup@12 eddll.dll : fatal error LNK1120: 1 unresolved externals подстановка в командную строку линкера /ENTRY:_DllMainCRTStartup ничего не дало. по этому поводу возникли вопросы: 1. как использовать _DllMainCRTStartup и _CRT_INIT применительно для MASMовского линкера? 2. как-же мне всё-таки скомпилировать свою dll? Заранее благодарен всем. p.s. неплохо бы было разместить где-нибудь на сайте доку по параметрам командной строки MASMовского линкера. |
|
|
Дата: Мар 4, 2003 06:32:03 А чем плоха USER32!wsprintfA? Или вам именно CRT? |
|
|
Дата: Мар 4, 2003 08:01:01 хм, может я чего то не понимаю... разве есть такая CRT функция wsprintf? Может printf или wprintf? просветите...plz |
|
|
Дата: Мар 4, 2003 09:03:46 Именно USER32!wsprintfA я и имел ввиду. А вы попробуйте откомпилировать библиотеку, в которой есть вызов wsprintf. Если получится, конечно. |
|
|
Дата: Мар 4, 2003 13:16:16 попробуй так /ENTRY:"DllMainCRTStartup" |
|
|
Дата: Мар 4, 2003 18:07:48 А вы попробуйте откомпилировать библиотеку, в которой есть вызов wsprintf. Попробовал! Вот что получилось: ----------------------- wsprintf_dll_test.asm ----------------------- .386 .model flat,stdcall option casemap:none include \masm32\include\windows.inc include \masm32\include\kernel32.inc includelib \masm32\lib\kernel32.lib includelib \masm32\lib\user32.lib .DATA lpFormat db "%d",0 .DATA? lpOut db 32 dup (?) .CODE DllMain PROC hInst:DWORD,reason:DWORD,resvd:DWORD mov eax,1 ret DllMain ENDP ALIGN 4 wsprintf_test PROC invoke wsprintf,OFFSET lpOut,OFFSET lpFormat,eax ret wsprintf_test ENDP END DllMain ----------------------- wsprintf_dll_test.def ----------------------- LIBRARY wsprintf_dll_test EXPORTS wsprintf_test Потом, C:\masm32\Bin\ml /c /coff /Cp /I C:\masm32\Include wsprintf_dll_test.asm C:\masm32\Bin\Link /SUBSYSTEM:WINDOWS /DLL /DEF:wsprintf_dll_test.def /LIBPATH:C:\masm32\Lib wsprintf_dll_test.obj И всё компилируется! |
|
|
Дата: Мар 4, 2003 20:58:38 Ну и чушь... |
|
|
Дата: Мар 5, 2003 08:27:26 Спасибо за помощь, но дело, как оказалось было не в функции wsprintf. Оказывается, что я просто забыл поставить в конце файла 'End LibMain'. Ещё раз спасибо всем. |
|
|
Дата: Мар 7, 2003 16:58:49 Для Quantum: Попробовал скомпилировать указанный вами пример. Создал два файла wsprintf_dll_test.asm и wsprintf_dll_test.def Поменял c:\ на d:\ в командных строках. OBJ файл создается. Линкер выдает: Microsoft (R) Incremental Linker Version 5.12.8078 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. LINK : fatal error LNK1117: syntax error in option "" Использую masm32 версии 8. Если нужно подправить не в генах :-), то подскажите где. Спасибо. |
|
|
Дата: Мар 7, 2003 18:12:37 misyachniy: У меня всё работает... честное слово :) Если вы компилируете из командной строки, то лучше попробуйте создать BAT файл и скопируйте туда D:\masm32\Bin\ml /c /coff /Cp /I D:\masm32\Include wsprintf_dll_test.asm D:\masm32\Bin\Link /SUBSYSTEM:WINDOWS /DLL /DEF:wsprintf_dll_test.def /LIBPATH:D:\masm32\Lib wsprintf_dll_test.obj Использую masm32 версии 8. У меня тоже MASM32 v8, правда с дошлепком от wasm.ru (.NET :), но это не принципиально. |
|
|
Дата: Мар 11, 2003 11:34:34 >>>У меня всё работает... честное слово :) Верю :-)У меня нет. :-( Я обычно пишу под TASM 2.0 консольные утилитки. На MASM32 ничего не писал еще. Но приколы или проколы в программах есть всегда. Никак не мог скомпилировать библиотеки под NT DDK, пока не создал папку c:\tmp. Где же править? |
|
|
Дата: Мар 12, 2003 11:41:08 Нашел где подправить. В "/LIBPATH" пролез лишний пробел и получилось "/ LIBPATH". Спасибо. :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.089 |