none
пишет ошибку в непонятной кодировке RRS feed

  • Вопрос

  • начал учить плюсы и проблема на первой же компиляции. на форме есть 2 текстбокса и кнопка. по идеи когда жмякаю на кнопку то текст из первого бокса переходит во второй.

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e){         textBox2->Text = textBox1->Text;}

    звучит просто, но у меня какаято непонятная ошибка- "Ошибка 1 error LNK1561: Єюўър тїюфр фюыцэр с√Є№ юяЁхфхыхэр c:\Users\Админ\documents\visual studio 2013\Projects\Проект1\Проект1\LINK Проект1"
    Помогите новичку.

       

    27 февраля 2014 г. 15:47

Ответы

  • Вы сделали немного не то. После добавления формы в проект у Вас должен был появиться файл MyForm.cpp. Откройте его и добавьте следующий код:

    #include <Windows.h>
    using namespace Имя_Вашего_Проекта;
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
    	Application::Run(gcnew MyForm);
    	return 0;
    }

    В строке "using namespace" необходимо указать название пространства имен, в котором объявлен класс формы (по умолчанию мастер называет его так, как называется проект).

    Цикл обработки сообщений, запускаемый в методе Run, обеспечивает работоспособность Вашего интерфейса пользователя (формы).


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 28 февраля 2014 г. 6:27
    • Помечено в качестве ответа KENT.ua 28 февраля 2014 г. 14:58
    28 февраля 2014 г. 6:26

Все ответы

  • Ошибка редактора связей (линкера) LNK1561 говорит о том, что в Вашем приложении нет главной функции. Приложение на C++ должно иметь глобальную функцию с именем main или WinMain. Судя по приведенному Вами коду, Вы пытаетесь создать приложение Windows Forms. Однако только класса формы в нем не достаточно. Объясните, как Вы создавали проект и какую версию VS Вы используете (Express, Pro и т.д.).

    Ну, а по поводу кодировки, русский язык, к сожалению, до сих пор для "них" чужой.

    P.S. "Плюсы" надо начитать изучать с консольного приложения, типа "Hello, world". Когда на этом этапе все будет понятно, можно и за GUI браться :)


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 27 февраля 2014 г. 20:27
    27 февраля 2014 г. 20:26
  • vs 2013 экспресс для windows desktop. сначала создаю пустой проект CLR, добавляю элемент из вкладки UI под именем "Форма Windows Forms", добавляю на форму текстбоксы и кнопку, кликаю на добавленную кнопку и пишу textBox2->Text = textBox1->Text;.  начинал учить на консольных, но видать рано полез в гуи.

    может новичку всё-таки инглиш версию поставить? хотя опять же возможно непойму что оно мне на английском пишет.

    27 февраля 2014 г. 21:26
  • Нужно в какой-нибудь cpp-файл Вашего проекта добавить функцию WinMain (сигнатуру можно найти в документации) и запустить в ней цикл обработки сообщений, что-то вроде:

    Application::Run(gcnew Form1);

    Я уже как-то отвечал на подобный вопрос, не могу найти, к сожалению :( а то бы ссылку дал.

    Утром напишу подробнее, если у Вас не получится.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    27 февраля 2014 г. 21:49
  • перед процедурой (незнаю как в плюсах, но в делфи это зовут процедурой) нажатия на кнопку добавил

    int WINAPI WinMain(HINSTANCE hInstance,
                HINSTANCE hPrevInstance,
                LPSTR lpCmdLine,
                int nCmdShow){
                Application::Run(gcnew MyForm);
                return 0;
            };

    проблема осталась та же=(

    зачем цикл?

    27 февраля 2014 г. 23:04
  • Вы сделали немного не то. После добавления формы в проект у Вас должен был появиться файл MyForm.cpp. Откройте его и добавьте следующий код:

    #include <Windows.h>
    using namespace Имя_Вашего_Проекта;
    
    int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
    {
    	Application::EnableVisualStyles();
    	Application::SetCompatibleTextRenderingDefault(false);
    	Application::Run(gcnew MyForm);
    	return 0;
    }

    В строке "using namespace" необходимо указать название пространства имен, в котором объявлен класс формы (по умолчанию мастер называет его так, как называется проект).

    Цикл обработки сообщений, запускаемый в методе Run, обеспечивает работоспособность Вашего интерфейса пользователя (формы).


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!


    • Изменено kosuke904 28 февраля 2014 г. 6:27
    • Помечено в качестве ответа KENT.ua 28 февраля 2014 г. 14:58
    28 февраля 2014 г. 6:26
  • Я уже неоднократно на разных форумах писал об этом, вынужден написать ещё раз.

    Не следует начинать изучение языка C++ в Visual Studio. Потому что эта IDE позволяет писать код на так называемом управляемом C++. Начинающие, что вполне естественно, пока не понимают различий, и часто создают проекты на управляемом C++. В частности, WinForms.

    Язык C++/CLI, он же C++.NET, он же Managed C++ следует использовать лишь для одной цели - склеивания управляемого и неуправляемого кода. Всё!

    Признаком управляемого c++ являются, например, оператор gcnew (gc - garbage collector - сборщик мусора), и управляемый указатель - символ ^. Если видите их в коде - это значит код для среды .NET, скомпилируется только в Visual Studio.

    Таким образом, либо поставьте другую IDE - она не позволит писать на управляемом c++, либо будьте внимательны и не поддавайтесь соблазну использовать хоть что-либо из дотнета в своих проектах на c++ в VS.

    Если хотите использовать Windows Forms, то возьмите для этого язык C#. Он существенно проще и учится быстрее C++. Но тогда добро пожаловать в мир дотнета, и на время забудьте о c++.

    28 февраля 2014 г. 7:34
  • Не следует начинать изучение языка C++ в Visual Studio.

    Это Вы, пожалуй, погорячились :)

    Согласен, что автор темы попытался, как когда-то Монголия, сразу прыгнуть из средневековья в социализм :) Язык программирования - не утюг, прежде чем писать что-то, нужно кое-какие знания получить.

    Однако не вижу особых отрицательных сторон у IDE от MS. Наоборот, с каждой версией все больше положительных. Не говорю уже об отладчике, аналог которого в GNU еще поискать надо. Пусть человек привыкает к хорошему, а когда судьба заставит и другие IDE сможет освоить.

    А по поводу C++, считаю, что его появление в свое время явилось величайшим событием в истории развития языков высокого уровня. На нем и сейчас такие вещи можно делать, что всем современным Си-шарпам и не снилось. И очень хорошо, что он развивается.


    Если сообщение помогло Вам, пожалуйста, не забудьте отметить его как ответ данной темы. Удачи в программировании!

    28 февраля 2014 г. 11:04
  • Это Вы, пожалуй, погорячились :)

    Я считаю Visual Studio одной из самых лучших IDE. Сам пользуюсь именно ей для работы с проектами на C++. Моё высказывание относится именно к тому, что начинающие, ещё не понимая различий между разными технологиями, потыкав по разным типам проектов, рано или поздно натыкаются на WinForms и, обрадованные: "О, можно легко писать приложения с GUI!" - погружаются в него. А это уже платформа .NET, это управляемый C++.
    28 февраля 2014 г. 17:24
  • Спасибо!

    Мне помогло.

    9 декабря 2014 г. 17:54
  • Полностью согласен. Привыкать нужно к хорошему)))
    9 декабря 2014 г. 17:56