Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: DLL в Windows Form  (Прочитано 55141 раз)
0 Пользователей и 1 Гость смотрят эту тему.
mustelus
Участник

by
Offline Offline

« Ответ #30 : 30-11-2009 10:06 » 

Вот код:
Код:
#using <System.DLL>
#include "stdafx.h"
#include "Form1.h"
#include <windows.h>
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <time.h>
#include "devioctl.h"
#include <setupapi.h>
#include <basetyps.h>
#include "BulkUsr.h"
#include "usbdi.h"

using namespace System::Threading;
using namespace Prilogenie;
using namespace System;
using namespace System::Security;
using namespace System::Security::Permissions;
using namespace System::Runtime::InteropServices;
using namespace System::IO::Ports;
[STAThreadAttribute]

int main(array<System::String ^> ^args)
{
//// Enabling Windows XP visual effects before any controls are created
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
//// Create the main window and run it
Application::Run(gcnew Form1());

//// вот отсюда начинаеться моя вставка

bool _continue;
SerialPort _serialPort;

        string name;
        string message;
        StringComparer stringComparer = StringComparer.OrdinalIgnoreCase;
        Thread readThread = new Thread(Read);

        // Create a new SerialPort object with default settings.
        _serialPort = new SerialPort();

       
        // Set the read/write timeouts
        _serialPort.ReadTimeout = 500;
        _serialPort.WriteTimeout = 500;

        _serialPort.Open();
        _continue = true;
        readThread.Start();

        Console.Write("Name: ");
        name = Console.ReadLine();

        Console.WriteLine("Type QUIT to exit");

        while (_continue)
        {
            message = Console.ReadLine();

            if (stringComparer.Equals("quit", message))
            {
                _continue = false;
            }
            else
            {
                _serialPort.WriteLine(
                    String.Format("<{0}>: {1}", name, message) );
            }
        }
        readThread.Join();
        _serialPort.Close();
};


Вот ошибки:
Код:
Warning	1	warning C4200: nonstandard extension used : zero-sized array in struct/union	c:\project_for_vs\prilogenie_ii\prilogenie\usbioctl.h	437	Prilogenie
Warning 2 warning C4200: nonstandard extension used : zero-sized array in struct/union c:\project_for_vs\prilogenie_ii\prilogenie\usbioctl.h 493 Prilogenie
Error 3 error C2065: 'string' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 37 Prilogenie
Error 4 error C2146: syntax error : missing ';' before identifier 'name' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 37 Prilogenie
Error 5 error C2065: 'name' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 37 Prilogenie
Error 6 error C2065: 'string' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 38 Prilogenie
Error 7 error C2146: syntax error : missing ';' before identifier 'message' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 38 Prilogenie
Error 8 error C2065: 'message' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 38 Prilogenie
Error 9 error C3622: 'System::StringComparer': a class declared as 'abstract' cannot be instantiated c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 39 Prilogenie
Warning 10 warning C4832: token '.' is illegal after UDT 'System::StringComparer' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 39 Prilogenie
Error 11 error C2275: 'System::StringComparer' : illegal use of this type as an expression c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 39 Prilogenie
Error 12 error C2039: 'get' : is not a member of 'System::StringComparer::OrdinalIgnoreCase' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 39 Prilogenie
Error 13 error C3767: 'System::StringComparer::StringComparer': candidate function(s) not accessible c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 39 Prilogenie
Error 14 error C2065: 'Read' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 40 Prilogenie
Error 15 error C2750: 'System::Threading::Thread' : cannot use 'new' on the reference type; use 'gcnew' instead c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 40 Prilogenie
Error 16 error C2512: 'System::Threading::Thread::Thread' : no appropriate default constructor available c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 40 Prilogenie
Error 17 error C2750: 'System::IO::Ports::SerialPort' : cannot use 'new' on the reference type; use 'gcnew' instead c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 43 Prilogenie
Error 18 error C2582: 'operator =' function is unavailable in 'System::IO::Ports::SerialPort' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 43 Prilogenie
Error 19 error C2143: syntax error : missing ';' before '.' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 54 Prilogenie
Error 20 error C2143: syntax error : missing ';' before '.' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 54 Prilogenie
Error 21 error C2065: 'name' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 55 Prilogenie
Warning 22 warning C4832: token '.' is illegal after UDT 'System::Console' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 55 Prilogenie
Error 23 error C2275: 'System::Console' : illegal use of this type as an expression c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 55 Prilogenie
Error 24 error C2143: syntax error : missing ';' before '.' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 57 Prilogenie
Error 25 error C2143: syntax error : missing ';' before '.' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 57 Prilogenie
Error 26 error C2065: 'message' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 61 Prilogenie
Warning 27 warning C4832: token '.' is illegal after UDT 'System::Console' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 61 Prilogenie
Error 28 error C2275: 'System::Console' : illegal use of this type as an expression c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 61 Prilogenie
Error 29 error C2065: 'message' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 63 Prilogenie
Warning 30 warning C4832: token '.' is illegal after UDT 'System::String' c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 70 Prilogenie
Error 31 error C2275: 'System::String' : illegal use of this type as an expression c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 70 Prilogenie
Error 32 error C2065: 'name' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 70 Prilogenie
Error 33 error C2065: 'message' : undeclared identifier c:\project_for_VS\Prilogenie_ii\Prilogenie\Prilogenie.cpp 70 Prilogenie
« Последнее редактирование: 30-11-2009 10:15 от Джон » Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #31 : 30-11-2009 10:47 » 

Ну вот. Теперь видно.

1.
Цитата
Error   3   error C2065: 'string' : undeclared identifier
неизвестный тип string ("'string' : undeclared identifier") - Действительно, ты какой тип под ним имел в виду? В C# есть такой встроенный тип, а в C++ есть только std::string и дотнетовский System::String. Первый не подходит, потому что пространство имён std не указано, а второй из-за чувствительности языка к регистру.

2.
Цитата
Error   9   error C3622: 'System::StringComparer': a class declared as 'abstract' cannot be instantiated
- и несколько последующих, связанных с ней.
Ты пытаешься создать абстрактный класс с помощью конструктора копирования, что нельзя. На самом деле, здесь скорее всего требовалось использовать тип-ссылку (StringComparer^ ), хотя в дотнетовских тонкостях применительно к C++ я не очень секу.

3.
Цитата
Error   14   error C2065: 'Read' : undeclared identifier
Солидарен с компилятором. Совершенно непонятно, что это за Read и откуда он взялся.

4.
Цитата
Error   15   error C2750: 'System::Threading::Thread' : cannot use 'new' on the reference type; use 'gcnew' instead
Надо слушать компилятора и не пытаться втиснуть C#-ный код в C++: беглый просмотр документации в MSDN для класса Thread даёт следующий пример правильного создания потока:
Код:
Thread^ oThread = gcnew Thread( gcnew ThreadStart( &ThreadExample::ThreadProc ) );

5.
Цитата
Error   17   error C2750: 'System::IO::Ports::SerialPort' : cannot use 'new' on the reference type; use 'gcnew' instead
Та же фигня, что и п.4

6. Ну и напоследок, с консолью тоже напортачено (точнее, с вызовом статических методов):
Цитата
Error   23   error C2275: 'System::Console' : illegal use of this type as an expression
А теперь глядим документацию в MSDN, пример для сиплюсплюса (там даже по русски):
Код:
Console::Write( L"Hola " );
Console::WriteLine( L"Mundo!" );
Console::WriteLine( L"What is your name: " );

Резюме: не надо, НЕ НАДО копировать код и надеяться, что как-нибудь так заработает. Особенно если языки разные Улыбаюсь Ну и RTFM, конечно.
« Последнее редактирование: 30-11-2009 10:52 от Вад » Записан
mustelus
Участник

by
Offline Offline

« Ответ #32 : 01-12-2009 09:10 » 

Я понял вас, а я так надеялся что C# и С++/CLI, почти похожи  Отлично
Записан
mustelus
Участник

by
Offline Offline

« Ответ #33 : 06-12-2009 10:25 » 

Господа, может, какую книгу посоветуете по C++/CLI, а то я вскользь просматривал по книге Айвора Хартона VS C++ 2005  Базовый курс, но по-моему, этого маловато... (по возможности бесплатной ссылкой поделитесь).
« Последнее редактирование: 07-12-2009 07:56 от Sel » Записан
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines