|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Или прилинковать ее к C++ проекту, чтобы вызывать скомпилированный VB-код из ресурсов к примеру ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 12:30 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Eolt, Линковать можно, но нужна msvbvm60.lib, которая содержит код, а не импорт. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 13:00 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, Вот она http://rghost.ru/67vbvSfhh Попытка прилинковать в лоб, не получилась, ошибки линкера: Код: vbnet 1. 2.
авторMicrosoft (R) Incremental Linker Version 6.00.8447 Copyright (C) Microsoft Corp 1992-1998. All rights reserved. Creating library C:\Projects\VB Compilers\Codes\DynamicCal1785148232004\dyncall\Test\Test.lib and object C:\Projects\VB Compilers\Codes\DynamicCal1785148232004\dyncall\Test\Test.exp msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIatan already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIcos already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIexp already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIlog already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIsin already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CIsqrt already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __CItan already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaAryDestruct already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaCastObj already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaChkstk already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaErase already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaExceptHandler already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFPException already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFreeObj already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFreeObjList already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFreeStr already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFreeVar already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaFreeVarList already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaHresultCheckObj already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaI4Var already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaNew2 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaObjSet already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaObjSetAddref already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaRedim already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaStrCat already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaStrI4 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaStrMove already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaVarCopy already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaVarMove already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: ___vbaVarZero already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdiv_m16i already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdiv_m32 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdiv_m32i already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdiv_m64 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdiv_r already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdivr_m16i already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdivr_m32 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdivr_m32i already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fdivr_m64 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fpatan already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fprem already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fprem1 already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __adj_fptan already defined in Test.OBJ msvbvm60.lib(msvbvm60.obj) : error LNK2005: __allmul already defined in Test.OBJ LINK : fatal error LNK1104: cannot open file "LIBC.lib" ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 13:06 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Как я понимаю, чтобы слинковать приложение нужны зависимости msvbvm60.lib LIBC.lib и еще kernel32.lib user32.lib gdi32.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 13:19 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Eolt, Во-первых твоя библиотека не содержит кода. Во-вторых нужно использовать COFF редактор для этого, чтобы можно было удалить секции. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 14:35 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Eolt, Во-первых твоя библиотека не содержит кода. все она содержит ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 14:50 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
В общем в C++ статическая линковка с MSVBVM60.LIB работает. Рантайм размещается внутрь EXE файла msvbvm60.h Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
msvbvm60.cpp Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Размер экзешника начинается примерно от 1500 кбайт. В импорте MSVBVM60.DLL больше нет! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 14:59 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
EoltATM-TURBO 2Eolt, Во-первых твоя библиотека не содержит кода. все она содержит Я судил по данным программы PEView: Как видишь она показывает нули. Ну раз либа содержит код - это все меняет. Тогда тебе нужно просто удалить из файла проекта секцию .idata с импортом msvbvm60 и ссылки на нее из файла ИмяПроекта.OBJ и потом линковать свою либу. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 15:36 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Как видишь она показывает нули. да странно, но пустая .LIB не может же прилинковаться к EXE чтобы он стал размером 1.5 мб? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 16:41 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Eolt, Видимо просмотрщик глючный. Проблема откидывания рантайма в том, что VB6 его автоматически подключает (его нельзя удалить в референсах). Поэтому придется вручную удалять эту секцию с импортом. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 16:45 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
ATM-TURBO 2, А нужно ли как-то инициализировать рантайм перед вызовом из него функций? Вот пытаюсь вызвать rtcMsgBox из C++ кода. Но происходит краш. Объявление: Код: plaintext 1. 2. 3. 4. 5.
вызов: Код: plaintext 1. 2. 3. 4. 5.
То ли объявление неправильное, то ли там на месте rtcMsgBox действительно нули... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 16:54 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Eolt, Код: vbnet 1.
По-моему так. Если не сработает - напиши я тогда глубже копну. Обычно в HelpFile и Context передаются VT_ERROR c DISP_E_PARAMNOTFOUND. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 17:16 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Кстати второй параметр передается по значению, другие параметры указатели на Variant переменные. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 17:17 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Попробовал вызвать функцию Trim$() вроде получилось. Рантайм в MSVBVM60.LIB явно живой. Теперь надо как-то встроить линковку этой библиотеки во время компиляции VB-проекта. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 18:29 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Eolt, Кстати, где ты это либку взял? Нет ли объектных файлов из которых она сделана? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 19:10 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
ATM-TURBO 2Eolt, Кстати, где ты это либку взял? Нет ли объектных файлов из которых она сделана? пару лет назад скачал с какого-то форума и забыл про нее, а сейчас вот нашел на диске. Вроде там писали, что она сделана с помощью утилиты которая конвертит Dll в Lib ... |
|||
:
Нравится:
Не нравится:
|
|||
27.12.2015, 19:13 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
Попробовал слинковать библилотеки MSVBVM60.lib, gdi32.lib, advapi32.lib, oleaut32.lib, ole32.lib, user32.lib, LIBC.LIB с тестовым VB проектом: автор "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\gdi32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\advapi32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\oleaut32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\ole32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\user32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.LIB" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\LIBC.LIB" "C:\test\msvbvm60.lib" "C:\test\Form1.OBJ" "C:\test\Module1.OBJ" "C:\test\Project1.OBJ" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" "C:\Program Files (x86)\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /OUT:"C:\test\Project1.exe" /BASE:0x400000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078 /DEF:"C:\test\Project1.def" Линкер ругается что в Project1.obj у уже определены символы. Можно ли это побороть? Project1.obj нельзя же выкинуть совсем. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2015, 14:18 |
|
Можно ли склинковать экзешник с msvbvm60.lib чтобы убрать рантайм из зависимостей?
|
|||
---|---|---|---|
#18+
EoltПопробовал слинковать библилотеки MSVBVM60.lib, gdi32.lib, advapi32.lib, oleaut32.lib, ole32.lib, user32.lib, LIBC.LIB с тестовым VB проектом: автор "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\gdi32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\advapi32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\oleaut32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\ole32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\user32.lib" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.LIB" "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\LIBC.LIB" "C:\test\msvbvm60.lib" "C:\test\Form1.OBJ" "C:\test\Module1.OBJ" "C:\test\Project1.OBJ" "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" "C:\Program Files (x86)\Microsoft Visual Studio\VB98\VBAEXE6.LIB" /ENTRY:__vbaS /OUT:"C:\test\Project1.exe" /BASE:0x400000 /SUBSYSTEM:WINDOWS,4.0 /VERSION:1.0 /INCREMENTAL:NO /OPT:REF /MERGE:.rdata=.text /IGNORE:4078 /DEF:"C:\test\Project1.def" Линкер ругается что в Project1.obj у уже определены символы. Можно ли это побороть? Project1.obj нельзя же выкинуть совсем. Я же написал: авторТогда тебе нужно просто удалить из файла проекта секцию .idata с импортом msvbvm60 и ссылки на нее из файла ИмяПроекта.OBJ и потом линковать свою либу. Тебе нужен COFF редактор. Я его делал, но как помнишь, у меня полетел HDD. Я потихоньку восстанавливаю проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.12.2015, 15:43 |
|
|
start [/forum/topic.php?fid=60&fpage=25&tid=2155674]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 321ms |
total: | 457ms |
0 / 0 |