Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.10;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.096 c
15-1214210046
тимохов
2008-06-23 12:34
2008.08.10
Вопрос про идеологию работы с реестром в CURRENT_USER


9-1172925794
PARUS
2007-03-03 15:43
2008.08.10
"Игра" - потестите


15-1213808280
TUser
2008-06-18 20:58
2008.08.10
Лекторий


15-1214390321
Rox
2008-06-25 14:38
2008.08.10
Сохранение информации


4-1194466380
Still Swamp
2007-11-07 23:13
2008.08.10
Не могу получить сообщение: