Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> C# + VB.Net, Совместное написание кода. 
:(
    Опции темы
Goganchic
Дата 1.10.2006, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Я много слышал о том, что все, написанное для .NET компилится в одинаковый байт-код, поэтому обеспечивается совместимость между различными языками программирования, но вот как с этим работать мало где написано. Прошу тех, кто знает написать подробнее, как например использовать в C# код, написанный на VB.NET.
PM Jabber   Вверх
mr.DUDA
Дата 1.10.2006, 12:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



В проект на шарпе можно добавить reference на сборку, скомпилированную из исходников на VB.NET (и наоборот) - вот и всё, если в двух словах.


--------------------
user posted image
PM MAIL WWW   Вверх
Cr@$h
Дата 1.10.2006, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Потом обращайся к этой сборке как будто она была написана на C#.
PM MAIL ICQ   Вверх
$tatic
Дата 1.10.2006, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 651
Регистрация: 28.1.2005

Репутация: 2
Всего: 22



Для ясности - в одном проекте использовать и C#, и VB нельзя. Многоязычность работает только в пределах решений (solutions)
PM MAIL   Вверх
Cr@$h
Дата 1.10.2006, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата($tatic @  1.10.2006,  16:08 Найти цитируемый пост)
Для ясности - в одном проекте использовать и C#, и VB нельзя. 

Да вот такими словами можешь только запутать. Нельзя писать код на разных языках в пределах одного проекта, но в одном приекте можно использовать сборки, написанные на любом .Net-языке.
PM MAIL ICQ   Вверх
Goganchic
Дата 2.10.2006, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Т.е. как я понял, нужно подключать сборки .Net'овские и все будет ок. А там никаких хедеров не недо, типа как в C++?

Добавлено @ 09:07 
А сборка, как я понимаю, это .Net'овская dll'шка, правильно?
PM Jabber   Вверх
Wanderer2019
Дата 2.10.2006, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 937
Регистрация: 3.12.2004
Где: Санкт-Петербург/П рага

Репутация: 7
Всего: 17





Цитата(Goganchic @  2.10.2006,  08:59 Найти цитируемый пост)
Т.е. как я понял, нужно подключать сборки .Net'овские и все будет ок. А там никаких хедеров не недо, типа как в C++?

Нет... Просто стандартный Using (для C#)


Цитата(Goganchic @  2.10.2006,  08:59 Найти цитируемый пост)
А сборка, как я понимаю, это .Net'овская dll'шка, правильно? 

Да
PM ICQ MSN   Вверх
Cr@$h
Дата 2.10.2006, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Goganchic @  2.10.2006,  09:59 Найти цитируемый пост)
.е. как я понял, нужно подключать сборки .Net'овские и все будет ок.

Да, а потом используй что-то типа Using, как в C#. Здесь у каждого .Net-языка слово Using может варьироваться.
Цитата(Goganchic @  2.10.2006,  09:59 Найти цитируемый пост)
А сборка, как я понимаю, это .Net'овская dll'шка, правильно?

Не только, это ещё может быть ".Net'овская exe'шка" (на сколько я знаю). Главное, ты получаешь доступ ко всем классам сборки.
PM MAIL ICQ   Вверх
Goganchic
Дата 2.10.2006, 17:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Цитата

Не только, это ещё может быть ".Net'овская exe'шка" (на сколько я знаю). Главное, ты получаешь доступ ко всем классам сборки. 

Т.е. можно и из exe-шки классы грузить?

Добавлено @ 17:36 
Я восхищаюсь этим творением Микрософта (имею ввиду .Net), но если там еще и из ехе-шек можно код загружать, то это просто супер. smile 
PM Jabber   Вверх
Cr@$h
Дата 2.10.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Goganchic @  2.10.2006,  18:26 Найти цитируемый пост)
Т.е. можно и из exe-шки классы грузить?

Просто не проверял, но это должно быть доступно. Там, наверное, только метод main нельзя будет запускать.
PM MAIL ICQ   Вверх
Goganchic
Дата 2.10.2006, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Cr@$h, вывеси кусок кода, как это можно сделать или же опиши последовательность действий в Visual Studio
PM Jabber   Вверх
Cr@$h
Дата 2.10.2006, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Всё же уже было сказано:
  • По проекту правой, Add Reference... Указываешь сборку.
  • Пишешь using пространство_имён;
Используешь классы, как обычно. Можно через пространство имён: пространство_имён.класс.
PM MAIL ICQ   Вверх
Cr@$h
Дата 2.10.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Стоп.

Действия такие же, как и при использовании DLL-сборки.
PM MAIL ICQ   Вверх
ivashkanet
Дата 3.10.2006, 10:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Goganchic @  2.10.2006,  17:26 Найти цитируемый пост)
Т.е. можно и из exe-шки классы грузить?
 
Цитата(Cr@$h @  2.10.2006,  22:28 Найти цитируемый пост)
Действия такие же, как и при использовании DLL-сборки.

Да, exe-шник --- та же длл-ка, только с точкой входа-запуска
PM MAIL WWW ICQ   Вверх
Cr@$h
Дата 3.10.2006, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(ivashkanet @  3.10.2006,  11:10 Найти цитируемый пост)
Да, exe-шник --- та же длл-ка, только с точкой входа-запуска

Которую, интересно, можно ли будет запускать из другой, основной, сборки?
PM MAIL ICQ   Вверх
Goganchic
Дата 3.10.2006, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Указываю ему .Net exe-шку, сделанную в той же VisualStudio, а он ругается, мол: "A reference ... coudn't be added. This is not a valid assembly or COM component only assemblies with extention 'dll' and COM components can be refenenced. Please make sure that the file is accessible, and it is a valid assembly or COM component." Ну так, какие соображения по этому поводу?
PM Jabber   Вверх
ivashkanet
Дата 3.10.2006, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Cr@$h @  3.10.2006,  16:08 Найти цитируемый пост)
Которую, интересно, можно ли будет запускать из другой, основной, сборки?

Вообще можно что угодно запустить из сборки 
Код
System.Diagnostics.Process.Start()

А по сути --- не понял вопроса  smile 
Зачем что-то запускать из запущенной сборки (кроме совершенно независимого приложения, см. выше)? Просто можно пользоваться кодом сборки как своим.

Добавлено @ 16:24 
Цитата(Goganchic @  3.10.2006,  16:14 Найти цитируемый пост)
Указываю ему .Net exe-шку, сделанную в той же VisualStudio

Все работает  smile Только что проверял

Добавлено @ 16:25 
И код выполняется.
Подключил к C# приложение на ВБ  smile 

PM MAIL WWW ICQ   Вверх
Exception
Дата 3.10.2006, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата($tatic @  1.10.2006,  16:08 Найти цитируемый пост)
Для ясности - в одном проекте использовать и C#, и VB нельзя. Многоязычность работает только в пределах решений (solutions)


Это если работать в Visual Studio. Можно вручную скомпилировать один набор файлов в модуль, а потом присоединить модуль к файлам сборки на другом языке, и они скомпонуются в одну сборку. Или можно объединить сборки утилитой ILMerge.


Цитата(Wanderer2019 @  2.10.2006,  10:20 Найти цитируемый пост)
Нет... Просто стандартный Using (для C#)


using открывает пространство имён, а не даёт ссылку на сборку.

Цитата(Cr@$h @  2.10.2006,  15:57 Найти цитируемый пост)
это ещё может быть ".Net'овская exe'шка" (на сколько я знаю)


Начиная с версии 2.0.

Цитата(Cr@$h @  3.10.2006,  17:08 Найти цитируемый пост)
Которую, интересно, можно ли будет запускать из другой, основной, сборки? 


Вероятно, да.

PM   Вверх
Cr@$h
Дата 3.10.2006, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(ivashkanet @  3.10.2006,  17:17 Найти цитируемый пост)
Зачем что-то запускать из запущенной сборки (кроме совершенно независимого приложения, см. выше)? Просто можно пользоваться кодом сборки как своим.

Запускать main другого класса, который лежит в исполняемой сборке...
Цитата(Goganchic @  3.10.2006,  17:14 Найти цитируемый пост)
Ну так, какие соображения по этому поводу?

Вот, например
Цитата(Exception @  3.10.2006,  17:29 Найти цитируемый пост)
Начиная с версии 2.0.

Похоже, так и есть.

Цитата(Exception @  3.10.2006,  17:29 Найти цитируемый пост)
Можно вручную скомпилировать один набор файлов в модуль

Модуль? Это dll'ка будет что ли?
PM MAIL ICQ   Вверх
ivashkanet
Дата 3.10.2006, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Cr@$h @  3.10.2006,  17:34 Найти цитируемый пост)
Запускать main другого класса, который лежит в исполняемой сборке...


Если к нему есть доступ, то да. Но по умолчанию она объявлена как private (как и весь класс Program)
PM MAIL WWW ICQ   Вверх
Cr@$h
Дата 3.10.2006, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(ivashkanet @  3.10.2006,  18:52 Найти цитируемый пост)
как и весь класс Program

?
PM MAIL ICQ   Вверх
Exception
Дата 3.10.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 29
Всего: 186



Цитата(Cr@$h @  3.10.2006,  18:34 Найти цитируемый пост)
Модуль? Это dll'ка будет что ли? 


Нет, это будет модуль с расширением .netmodule. Потом его можно прилинковать при компиляции к другой сборке.

Добавлено @ 18:51 
Цитата(ivashkanet @  3.10.2006,  18:52 Найти цитируемый пост)
Но по умолчанию она объявлена как private


Я не догоняю, Main() ведь всегда public static...
PM   Вверх
Cr@$h
Дата 3.10.2006, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(Exception @  3.10.2006,  19:50 Найти цитируемый пост)
Я не догоняю, Main() ведь всегда public static... 

Вот и я про то. Можно ли вызвать во втром ДотНете из исполняемой сборки метод main?
PM MAIL ICQ   Вверх
ivashkanet
Дата 3.10.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Exception @  3.10.2006,  18:50 Найти цитируемый пост)
Я не догоняю, Main() ведь всегда public static...

Создайте новый проект и загляните в класс Program? в котором и находиться Main. Так вот ни для main ни для его класса Program не стоит модификатора доступа. Следовательно оба они Private.
Код

namespace WindowsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}


Более того, если сборку подключить к другой, то доступа к main не будет, но если сделать их Public, то достучаться до них легко: WindowsApplication1.Program.Main
Цитата(Cr@$h @  3.10.2006,  18:57 Найти цитируемый пост)
Вот и я про то. Можно ли вызвать во втром ДотНете из исполняемой сборки метод main?

Я ответил выше smile
PM MAIL WWW ICQ   Вверх
Cr@$h
Дата 3.10.2006, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



А что будет? Второй процесс, второй поток, или всё в том же потоке будет запускаться, как обычный метод?
PM MAIL ICQ   Вверх
Goganchic
Дата 3.10.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



Ах вон оно что. Значит у меня просто проблемы со средствами: у меня стоит Visual Studio 2003, значит поставлю 2005-й и все будет ок
PM Jabber   Вверх
ivashkanet
Дата 3.10.2006, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Cr@$h @  3.10.2006,  21:23 Найти цитируемый пост)
А что будет? Второй процесс, второй поток, или всё в том же потоке будет запускаться, как обычный метод?

Main запустится в том же потоке, но так как там форма, то она уже будет крутиться в отдельном потоке

Добавлено @ 21:27 
Цитата(Cr@$h @  3.10.2006,  21:23 Найти цитируемый пост)
 как обычный метод

да так smile Ведь при подключении сборки мы просто имеем доступ к ее коду и ресурсам и все smile А main это просто метод, только с него все начинается smile
PM MAIL WWW ICQ   Вверх
Cr@$h
Дата 3.10.2006, 22:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
***


Профиль
Группа: Участник Клуба
Сообщений: 1693
Регистрация: 3.4.2005
Где: Санкт-Петербург, Россия

Репутация: 1
Всего: 41



Цитата(ivashkanet @  3.10.2006,  22:25 Найти цитируемый пост)
Main запустится в том же потоке, но так как там форма, то она уже будет крутиться в отдельном потоке

 smile 
Цитата(ivashkanet @  3.10.2006,  22:25 Найти цитируемый пост)
А main это просто метод, только с него все начинается 

Да вот и не такой уж и простой...
PM MAIL ICQ   Вверх
reloni
Дата 3.10.2006, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 10.5.2006
Где: Москва

Репутация: 3
Всего: 4



Цитата(ivashkanet @  3.10.2006,  22:19 Найти цитируемый пост)
Следовательно оба они Private.

Класс Program - Internal, a не Private:)
PM MAIL ICQ   Вверх
mr.DUDA
Дата 3.10.2006, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(reloni @  3.10.2006,  23:14 Найти цитируемый пост)
Класс Program - Internal, a не Private:)

Ага, только это для классов, объявленных в namespace; а вот для nested-классов уже работают все пять модификаторов: public, protected, protected internal, private и internal smile

Добавлено @ 23:23 
Цитата
Top-level types, which are not nested into other types, can only have internal or public accessibility. The default accessibility for these types is internal. Nested types, which are members of other types, can have declared accessibilities as indicated in the following table.

enum:
 public
 None
 
class:
 private
 public
 protected
 internal
 private
 protected internal
 
interface:
 public
 None
 
struct:
 private
 public
 internal
 private



--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 4.10.2006, 07:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(reloni @  3.10.2006,  23:14 Найти цитируемый пост)
Класс Program - Internal, a не Private:)

В C# без модификатора => internal? Давно я серьезно не кодил на шарпе, все барсик, да барсик  smile  smile 
Цитата(Cr@$h @  3.10.2006,  22:09 Найти цитируемый пост)
Да вот и не такой уж и простой...

ИМХО, он такой же метод как и все. И если бы разработчики сняли бы ограничения (только main может быть стартовым методом), то можно было бы начинать прогу с любого метода. 
Вся работа по созданию домена, открытия потока, ... , ИМХО, ведется фрэймворком, а уже потом, когда все необходимое готово, вызывается main, как стартовая точка приложения.
Точно так же в майн можно, ИМХО, прописать какую-нить, все равно какую, логику. Правда чаще всего main используется для старта главной формы.

P.S. Товарищ Cr@$h, объясните пожалуйста почему вы смеетесь  smile  smile  smile

Добавлено @ 08:00 
Цитата(mr.DUDA @  3.10.2006,  23:21 Найти цитируемый пост)
 вот для nested-классов уже работают все пять модификаторов

Program -- не nested класс, он лежит сразу в нэймспейсе (рефлектор вам в руки)

P.S. Хоть и оба (и класс и метод без модификаторов) класс имеет достум internal, а вот метод main -- private  smile 

Не верите мне, поверьте рефлектору:
Код

namespace Test_wa_cs
{
      public class Form1 : Form
      {
            // Methods
            public Form1();
            protected override void Dispose(bool disposing);
            private void InitializeComponent();

            // Fields
            private IContainer components;
            private ToolStripMenuItem dfgdfgToolStripMenuItem;
            private ToolStripMenuItem dfgToolStripMenuItem;
            private ToolStripMenuItem dfgToolStripMenuItem1;
            private MenuStrip menuStrip1;
      }

      internal static class Program
      {
            // Methods
            [STAThread]
            private static void Main();
      }
}



PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 4.10.2006, 11:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



ivashkanet, да мы тебе верим smile, у нас тут пошли отвлечённые разговоры на общую тему...


--------------------
user posted image
PM MAIL WWW   Вверх
ivashkanet
Дата 4.10.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(mr.DUDA @  4.10.2006,  11:07 Найти цитируемый пост)
у нас тут пошли отвлечённые разговоры на общую тему...

В каком месте? Я не заметил  smile

Добавлено @ 11:11 
Цитата(mr.DUDA @  3.10.2006,  23:21 Найти цитируемый пост)
Ага, только это для классов, объявленных в namespace; а вот для nested-классов уже работают все пять модификаторов: public, protected, protected internal, private и internal

Аааа, ты говоришь о том, что только невложенные классы без модификаторов имеют доступ internal, а вложенные --- private? smile
PM MAIL WWW ICQ   Вверх
mr.DUDA
Дата 4.10.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Цитата(ivashkanet @  4.10.2006,  11:08 Найти цитируемый пост)
Аааа, ты говоришь о том, что только невложенные классы без модификаторов имеют доступ internal, а вложенные --- private?

да


--------------------
user posted image
PM MAIL WWW   Вверх
Kvazilol
Дата 7.12.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



здравствуйте, мне нужно в солюшене C# использовать класс (наследоватать, создавать объекты и т.п.)   из другого проекта, который на C++
 оба проекта скомпиллированы и у них в папке Debug есть exe-шка
вот я жму правой кнопкой на проект в C#, Add Reference, Browse и выбираю exe-шку с++ проекта 
ну и выскакивает ошибка как у когото кто уже об этом написал.

"A reference ... coudn't be added. This is not a valid assembly or COM component only assemblies with extention 'dll' and COM components can be refenenced. Please make sure that the file is accessible, and it is a valid assembly or COM component.

а может нужно писать какието ключевые слова перед чемнибудь? у меня всё по умолчанию как бы...
ответьте пожалста поподродбнее, чтоб все поняли...

никаких замутов, dll, ничо там нет - можно сказать хелоуворлд с классами..  оба проекта консольные.. 

а ведь можно добавить в солюшен C# проект из С++..?..как тогда всё сделать чтоб юзать с++-совские классы?.. чем же это отличается от "Add Reference"

Это сообщение отредактировал(а) Kvazilol - 7.12.2006, 23:03
PM MAIL   Вверх
mr.DUDA
Дата 8.12.2006, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232




M
mr.DUDA
Kvazilol, одна тема - один вопрос, пожалуйста.
Здесь совсем другая проблема: С++ длл нельзя подключить к C#-овскому проекту.



--------------------
user posted image
PM MAIL WWW   Вверх
skyboy
Дата 8.12.2006, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



mr.DUDA, даже, если имеется в виду С++.NET? 
PM MAIL   Вверх
Kvazilol
Дата 8.12.2006, 02:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



дадада конечно на .NET (2005). 
ну как это может быть что сборка VB конектится к C# а C++ не конектится!?  smile   smile  не-ве-рю   smile 
PM MAIL   Вверх
mr.DUDA
Дата 8.12.2006, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Если сборка на Managed C++, то должны добавляться референсы без проблем.


--------------------
user posted image
PM MAIL WWW   Вверх
Kvazilol
Дата 8.12.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



так, в одном солюшене win32 проект и проект на C# (консольные)
( просто друг делает сокеты на win32 а я интерфейс на C#..  )
вот я создал класс в его проекте(класс называется Serega, а проект называется w32) , затем делаю build нашим проектам, затем добавляю моему (C#) проекту референс на проект друга.. ура! он добавился)))
а вот как теперь в C# создать экземпляр этого класса?
надо в мейне у C#  написать
w32.Serega mySerega = new w32.Serega(); // это без using Serega
???
но компиллятор ваще не видит неймспейса w32, тоесть когда пишу using w32 то происходит ошибка 

Error    1    The type or namespace name 'w32' could not be found (are you missing a using directive or an assembly reference?)    C:\Projects\с#\sharp\sharp\Program.cs    4    7    sharp

 вот что я не так делаю?

Это сообщение отредактировал(а) Kvazilol - 8.12.2006, 13:15
PM MAIL   Вверх
mr.DUDA
Дата 8.12.2006, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Win32 С++ проект и .NET C++ проект - это разные вещи. Пусть для начала твой товарищ поставит в свойствах проекта "Use common language runtime = true" и попробует скомпилировать.


--------------------
user posted image
PM MAIL WWW   Вверх
Kvazilol
Дата 8.12.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



ну он делает проект в той же самой Microsoft Visual Studio 2005 и у него он соответственно .NET но тип проекта Win32 Console Application
вот мне сегодня продвинутый человек показывал как соединить проекты, у него вначале чото не получилось но потом они соединились но он так быстров всё нажимал что я не успел всё запомнить( 
никаких Use common language runtime = true он не делал, всё запустилось без этого..(
а где в свойствах проекта найти Use common language runtime  ???
млин всё наверное делается просто а я чтото не сделал и пропустил..

Это сообщение отредактировал(а) Kvazilol - 8.12.2006, 14:25
PM MAIL   Вверх
skyboy
Дата 8.12.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(Kvazilol @  8.12.2006,  13:18 Найти цитируемый пост)
но тип проекта Win32 Console Application

а должен быть Console Application(.NET).
Именно об этом тебе говорил mr.DUDA.
PM MAIL   Вверх
ivashkanet
Дата 8.12.2006, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Kvazilol @  8.12.2006,  13:18 Найти цитируемый пост)
но он так быстров всё нажимал что я не успел всё запомнить( 

Цитата(Kvazilol @  8.12.2006,  13:18 Найти цитируемый пост)
никаких Use common language runtime = true он не делал, всё запустилось без этого..(

Где логика  smile 
PM MAIL WWW ICQ   Вверх
Kvazilol
Дата 8.12.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



уууй блииин я уже со всем запутался.
ну вот такой проект у моего товарища:
http://slil.ru/23537824
этож в среде .NET сделано! знчит и  проект .NET!? ни-чо не понимаю.....
PM MAIL   Вверх
skyboy
Дата 8.12.2006, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(Kvazilol @  8.12.2006,  13:38 Найти цитируемый пост)
этож в среде .NET сделано! знчит и  проект .NET!? ни-чо не понимаю..... 

Нет. То, что IDE называется VisualStudio.NET ещё не означает, что компилироваться всё будет исключительно в .NET структуры...(на заборе слово из трех написано, а там - дрова лежат smile)
Для того, чтоб получить управляемый код, надо создавать проект, нацеленный на использование управляемого кода.
PM MAIL   Вверх
ivashkanet
Дата 8.12.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодю потиху
****


Профиль
Группа: Участник Клуба
Сообщений: 3684
Регистрация: 23.2.2006
Где: Гомель, Беларусь

Репутация: 47
Всего: 149



Цитата(Kvazilol @  8.12.2006,  13:38 Найти цитируемый пост)
этож в среде .NET сделано! знчит и  проект .NET!? ни-чо не понимаю..... 

ЭТО СДЕЛАНО В VISUAL STUDIO. КОТОРАЯ МОЖЕТ ДЕЛАТЬ КАК .NET ТАК И ПОД WIN32 (Т.Е. NAITIVE).

ЭТОТ ПРОЕКТ СДЕЛАН ПОД WIN32
PM MAIL WWW ICQ   Вверх
Kvazilol
Дата 8.12.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



ой а как же тогда из   win32 сделать  win32.NET чтобы он референсился к c# ???
тоесть получается что если создать проект на с++ то он будет Nativ а не managed!? ну и ну!
а,  Use common language runtime = true чо делает?.. и самое главное, где его найти в свойства проекта ? а кстатии какого проекта? который на с++, да?

я нашел Common language runtime support в настройках проекта win32, какое значение нужно ему сопоставить???

Это сообщение отредактировал(а) Kvazilol - 8.12.2006, 15:45
PM MAIL   Вверх
mr.DUDA
Дата 8.12.2006, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232





Может, лучше вашего коллегу пригласите, пусть он всё сам сделает.


--------------------
user posted image
PM MAIL WWW   Вверх
Kvazilol
Дата 9.12.2006, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



да коллега ваще не разбирается в .NET а я про .NET в книжке читал) вот такие мы hi expirience developers  smile 
а может лучше ктонибудь кто знает напишет как прально объединить win32 и c#..  smile  или скажет что это 100% невозможно..

Это сообщение отредактировал(а) Kvazilol - 9.12.2006, 01:11
PM MAIL   Вверх
mr.DUDA
Дата 9.12.2006, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Проще всего сделать win32 dll и подключать её через [DllImport]. Примеры уже были в разных темах.


--------------------
user posted image
PM MAIL WWW   Вверх
Kvazilol
Дата 9.12.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 7.12.2006

Репутация: нет
Всего: нет



как мне найти такие примеры? дайте мне ссылки, пажалста
PM MAIL   Вверх
mr.DUDA
Дата 9.12.2006, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Ну вот, к примеру, код использующий "некую" user32.dll, и в частности функцию SendMessage:

Код
[DllImport("user32.dll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);

public const int WM_CLOSE = 16;

private void button1_Click(object sender, System.EventArgs e)
{
    SendMessage(this.Handle, WM_CLOSE, 0, 0);
}


P.S. найти тучу примеров можно тыкнув на кнопку "Поиск" вверху страницы, выбрав в списке ".NET (Подкатегория") и набрав в поле "Ключевое поле для поиска" строку DllImport


--------------------
user posted image
PM MAIL WWW   Вверх
QryStaL
Дата 13.6.2008, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 14
Всего: 32



А кто-то применял на практике смешение языков в своем приложении? С реальной пользой?


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
marcusmae
Дата 13.6.2008, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 22
Всего: 39



QryStaL, неоднократно.

Вот пример из последних : нужно разработать некое подобие самопальной СУБД для хранения двоичных данных в таких масштабах, какие M$ Access не снились. Причём это хранилище ориентировано на двоичные потоки с последовательностями повторяющихся значений-пустот, который нехитрым образом маркируются. Так вот, сам формат, адаптеры из других форматов и низкоуровневые функции обработки мне удобнее всего накрутить на платформонезависимом C/C++, основанный на нём высокоуровневый интерфейс - на CLI.C++, ну а сервис для удалённой работы - уже на C#. Нахожу в этом две пользы : а) эффективность разработки (для меня) б) эффективность (быстрота работы) кода в чувствительных моментах.

Смешение часто можно увидеть у приложение<->COM, клиент<->сервер-ов или у ядро<->интерфейс-ов. Скажем, Civilization IV частично написана на Python-e smile Или же Regex - хоть встраиваемый в .NET или в Perl, но тоже язык. А у ремесленников в веб-дизайне - вообще одно сплошное смешение.

Это сообщение отредактировал(а) marcusmae - 13.6.2008, 01:10


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1056 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.