Вопрос перевода проекта из С++Builder -> Visual Studio
Был изначально проект написанный под Бюилдер и все работало. Взял модули из него и вставил в Визуал Студию.
Повалило куча ошибок связанных с мат функциями начиная от M_PI заканчивая log10 и pow .
Я нашел всякие приколы обхода типа System::Math::Log10 , но остается вопрос как так может быть , что Visual Studio не понимает стандартных функций,
я уже стал подозревать , что где-то в настройках проекта надо включить , но к сожалению в книгах такого не встречал?
PS Когда применял stl тоже встрети странность- применение vector работает до момента применения алгоритмов max_element и min_element?
PSS Все math , cmath, math.h, cmath.h, namespec std, algorithm были опробованы.
вот такого типа ошибки
1>arria_gx_ctrl.obj : error LNK2028: unresolved token (0A000023) "extern "C" int __stdcall SetupDiEnumDeviceInterfaces(void *,struct _SP_DEVINFO_DATA *,struct _GUID const *,unsigned long,struct _SP_DEVICE_INTERFACE_DATA *)" (?SetupDiEnumDeviceInterfaces@@$$J220YGHPAXPAU_SP_DEVINFO_DATA@@PBU_GUID@@KPAU_SP_DEVICE_INTERFACE_DATA@@@Z) referenced in function "public: int __clrcall ArriaGX_Ctrl::search(void)" (?search@ArriaGX_Ctrl@@$$FQAMHXZ)
Как с ними бороться , подменами существующего или еще как пока не знаю
из http://programmersforum.ru/showthread.php?t=105263
В свойствах проекта "Configuration properties -> Linker -> Input -> Additional Dependencies" не стояла галочка у "Inherit from parent or project defaults".
Проставил ее и все скомпилировалось и скомпоновалось.
Вот список библиотек которые туда влезли (какие-то видать не нужны, но одной user32.lib точно не достаточно):
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib
Так работает или нет? Если нет, то что не работает?
Создавай проект, в котором нет слов CLR и .NET.
Хочешь клепать формочки в дизайнере - бери управляемый код. Но тогда переходи на C#. Впрочем, Windows Forms уже считается устаревшей. Бери сразу WPF.
Managed C++ нужен лишь в качестве "клея" - для связывания управляемуого кода (написанного на C# и VB.NET) и неуправляемого (написанного на C и C++).
Уже неоднократно писал об этом на Коднете, отмечу ещё раз: Visual Studio не годится для начинающих плюсистов именно по причине того, что позволяет писать как управляемый, так и неуправляемый код. Нубы, начитавшись, какой ЦПП крутой и быстрый, пробуют его. Наткнувшись на проект Windows Forms они восклицают: "Вау! Можно легко клепать формочки!" И понеслась...
Ну это не совсем верно.Если он хочет просто клепать их,то редактор ресурсов для C++ ему в помощь! :)
Ну а логику прописать—это уж само собой
1>optic_object.obj : error LNK2020: неразрешенная лексема (0A000016) "protected: int __clrcall ArriaGX_Ctrl::dataTransfer(int,unsigned int,...)" (?dataTransfer@ArriaGX_Ctrl@@$$FIAMHHIZZ)
1>optic_object.obj : error LNK2028: ссылка на неразрешенную лексему (0A000017) "public: __clrcall ArriaGX_Ctrl::ArriaGX_Ctrl(void)" (??0ArriaGX_Ctrl@@$$FQAM@XZ) в функции "public: __clrcall Device_struct::Device_struct(void)" (??0Device_struct@@$$FQAM@XZ)
1>optic_object.obj : error LNK2028: ссылка на неразрешенную лексему (0A000018) "public: __clrcall ArriaGX_Ctrl::~ArriaGX_Ctrl(void)" (??1ArriaGX_Ctrl@@$$FQAM@XZ) в функции "public: __clrcall Device_struct::~Device_struct(void)" (??1Device_struct@@$$FQAM@XZ)
1>optic_object.obj : error LNK2028: ссылка на неразрешенную лексему (0A000019) "public: int __clrcall ArriaGX_Ctrl::search(void)" (?search@ArriaGX_Ctrl@@$$FQAMHXZ) в функции "public: __clrcall Device_struct::Device_struct(void)" (??0Device_struct@@$$FQAM@XZ)
1>optic_object.obj : error LNK2028: ссылка на неразрешенную лексему (0A00001A) "public: int __clrcall ArriaGX_Ctrl::init(unsigned int,unsigned int,unsigned int,unsigned int,unsigned int,unsigned int)" (?init@ArriaGX_Ctrl@@$$FQAMHIIIIII@Z) в функции "public: __clrcall Device_struct::Device_struct(void)" (??0Device_struct@@$$FQAM@XZ)
1>optic_object.obj : error LNK2020: неразрешенная лексема (0A00005D) "protected: int __clrcall ArriaGX_Ctrl::dataTransfer(int,unsigned int,...)" (?dataTransfer@ArriaGX_Ctrl@@$$FIAMHHIZZ)
1>optic_object.obj : error LNK2020: неразрешенная лексема (0A000071) "protected: int __clrcall ArriaGX_Ctrl::dataTransfer(int,unsigned int,...)" (?dataTransfer@ArriaGX_Ctrl@@$$FIAMHHIZZ)
1>optic_object.obj : error LNK2020: неразрешенная лексема (0A00008A) "protected: int __clrcall ArriaGX_Ctrl::dataTransfer(int,unsigned int,...)" (?dataTransfer@ArriaGX_Ctrl@@$$FIAMHHIZZ)
1>optic_object.obj : error LNK2020: неразрешенная лексема (0A0000F3) "unsigned int size_buff" (?size_buff@@$$Q3IA)
Теперь уважаемому знатоку "koodeer"- форум он на то и форум что б разрешать вопросы. Я ни первый год занимаюсь программированием ,правдо под Builder, и Visual познаю по книгам. и к сожалению данная тема не была там затронута.
Если ты где то эту тему рассматривал и разбирал, лучше б кинул ссылку вместо возмущений и раздражений.
А найти какую -либо информацию весьма сложно , особенно когда не знаешь как задать вопрос.
Ну вот тебе линк по теме.
Видимо не легко ПОЗНАВАТЬ это по книгам. Ибо воистену - НИ первый год. Житие мое…— Какое житие твое, пёс смердящий!.
Ну? Ты задал вопрос, я дал ответ.
Ещё раз: C++ и C++.NET - это разные языки! Почему тебя удивляет, что код на одном языке не собирается в компиляторе другого языка?
Первый ответ я писал спокойно. Вот теперь я начинаю возмущаться и раздражаться.
Если ты программист, а не гадалка, кинь пример кода, который пытаешься собрать. Мы не гадаем по невразумительным сообщениям компилятора об ошибках. Ну нельзя по ним диагноз поставить!
Уточню: собрать код нативного С++ в C++.NET конечно можно. Языки хоть и разные, но совместимые. Чего не хватает: каких-то либ, каких-то инклюдов, каких-то пространств имён.