Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
2-1215435771
Сергей
2008-07-07 17:02
2008.08.10
Почему не подключает Winrar?


13-1120639782
Игорь Шевченко
2005-07-06 12:49
2008.08.10
Как вызывать виртуальные классовые методы из неклассовых методов?


2-1215600820
IvanS
2008-07-09 14:53
2008.08.10
TreeNode


15-1214376304
Галинка
2008-06-25 10:45
2008.08.10
"Венгерская нотация" для c#


15-1213908323
dev
2008-06-20 00:45
2008.08.10
NMPOP3





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский