Форум: "Прочее";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизC++ Builder разница между проетами Найти похожие ветки
← →
Riply © (2008-06-23 09:19) [0]Здравствуйте !
Попробовала сделать так:
В Builder выбираем File --> New --> VCL Forms Application.
Выбрасываем из проекта Unit1 и res.
В оставшемся Project1 чуть меняем код на:
#include <sysutils.hpp>
#pragma hdrstop
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
if (IntToStr(9) == "ii") Beep(100, 100);
return 0;
}
Сохраняем и "билдим": все OK.
Теперь пытаемся тоже проделать с консольным проектом:
Выбираем File --> New --> Other --> Console Application
Опять чуть меняем код на:
#include <sysutils.hpp>
#pragma hdrstop
//---------------------------------------------------------------------------
int main(int argc, char* argv[])
{
if (IntToStr(9) == "ii") Beep(100, 100);
return 0;
}
и пытаемся "билдить".
И нам выдаются следующие ошибки:
[Linker Error] Error: Unresolved external "System::__linkproc__ __fastcall LStrClr(void *)" referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring
[Linker Error] Error: Unresolved external "__fastcall Sysutils::IntToStr(int)" referenced from E:\DELETE FILES\CONSOL\DEBUG_BUILD\UNIT1.OBJ
[Linker Error] Error: Unresolved external "System::__linkproc__ __fastcall LStrFromPChar(System::AnsiString&, char *)" referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring
[Linker Error] Error: Unresolved external "System::__linkproc__ __fastcall LStrCmp()" referenced from C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\DEBUG\VCLE.LIB|dstring
Объясните мне, пожалуйста, в чем разница
и как консольный проект научить принимать sysutils.hpp без ругани :)
← →
Simpson © (2008-06-23 09:35) [1]Имхо скорее всего у них в зависимости от типа проекта препроцессор магией занимается))
#ifdef windowed
#include <windows.h>
#else
#include <stdio.h>
#end
Может попробывать на прямую указать "windows.h и все все все", без СBuilder"ских заморочек?
← →
Riply © (2008-06-23 09:50) [2]> [1] Simpson © (23.06.08 09:35)
> Может попробывать на прямую указать "windows.h и все все все
Попробовала добавить "все, все, все":
#include <windows.h>
#include <winnt.h>
#include <windef.h>
#include <System.hpp>
#include <windows.hpp>
#include <sysutils.hpp>
#include <sysutils.hpp>
Таже ошибка, что и раньне.
Может у меня "все, все" не совсем все ? :)
← →
Simpson © (2008-06-23 09:59) [3]Ну тогда незнаю, я бы долго не мучался, а использовал родные atof, atol если все дело в IntToStr.
← →
Riply © (2008-06-23 10:07) [4]> [3] Simpson © (23.06.08 09:59)
> Ну тогда незнаю, я бы долго не мучался, а использовал родные atof, atol если все дело в IntToStr.
Нет, дело не в IntToStr - она я для примера.
А столкнулась я с этим, пытаясь "достать" MemoryManagerEx из system.hpp.
Да и просто хочеться понять причину.
← →
wicked © (2008-06-23 11:15) [5]пробовала #include <vcl.h> ?
← →
Riply © (2008-06-23 11:30) [6]> [5] wicked © (23.06.08 11:15)
> пробовала #include <vcl.h> ?
Не спасает :(
← →
guav © (2008-06-23 11:43) [7]А если создавать сразу console application, то всё работает ?
Надо наверное сравнить VCL application и console application построчно.
← →
Riply © (2008-06-23 11:52) [8]> [7] guav © (23.06.08 11:43)
> А если создавать сразу console application, то всё работает ?
Нет, не работает. Во всяком случае, у меня.
Чтобы найти причину, я пыталась привести их к одному виду и выкинуть все лишнее.
Так и получился код из [0] Riply
← →
wicked © (2008-06-23 11:57) [9]сори, не заметил, что линкер ошибками плюет
значит не то выкинула
посмотри, с чем ты линкуешься в каждом конкретном случае
лучше всего глядеть в bpr файле
← →
Riply © (2008-06-23 12:08) [10]Дали мне подсказку:
"Поставить галку Project->Options->Packages->Build with runtime packages = True;
Разница в том, что эта галка для VCL-приложений стоит автоматом..."
Проверила: так и есть :)
Но тут же появляется следующий вопрос: а как аналогичное проделать "вручную".
Что именно и как надо "подсоединять" ?
← →
wicked © (2008-06-23 12:11) [11]
> Но тут же появляется следующий вопрос: а как аналогичное
> проделать "вручную".
> Что именно и как надо "подсоединять" ?
давно былдер не запускал, поэтому пишу алгоритм
1 - внимательно изучить опции проекта, вкладку linker
2 - если есть нужные опции, то использовать их (90%, что их там нет)
3 - иначе - никак, только правками bpr
← →
AndreyV © (2008-06-23 13:58) [12]> [0] Riply © (23.06.08 09:19)
> Теперь пытаемся тоже проделать с консольным проектом:
> Выбираем File --> New --> Other --> Console Application
И поставить галку "Use VCL"
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c