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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Использование С# и C++ в одном приложении, Как это реализовать? 
:(
    Опции темы
SMART32
Дата 31.8.2007, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте коллеги!


У меня такой вопрос - мне нужно в коде  Windows Application на С# использовать код, написанный на С++ Builder.  Как этот код включить в проект и сделать на C# вызов функций, написанных на С++? И правильно ли будут работать include библиотек с С++-коде?

Если можно, дайте пример...

Заранее спасибо!
PM MAIL   Вверх
tdebugger
Дата 31.8.2007, 10:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Поищи в MSDN на тему DllImport, примеров там хватит...
--------------------
ТЕХНОЛОГИЯ "JAVA"  НЕ ПРЕДНАЗНАЧЕНА ДЛЯ УПРАВЛЕНИЯ ЯДЕРНЫМИ УСТАНОВКАМИWindows98 License.txt
PM MAIL MSN   Вверх
SMART32
Дата 31.8.2007, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Там ссылка на SDK 1.0, а  у меня SDK 2.0 . Соответственно, никаких примеров у меня нет..((
PM MAIL   Вверх
SMART32
Дата 31.8.2007, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Если посоветуете книжку по этой теме - буду благодарен)) А вообще-то  smile 
PM MAIL   Вверх
Shit_happenes
Дата 31.8.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код



[DllImport("Name.dll", EntryPoint = "NameFunction",
             SetLastError = true, CharSet = CharSet.Unicode)]
        internal static extern int NameFunction(int i, int j);

 Что-то в этом роде.
PM MAIL   Вверх
Mag
Дата 3.9.2007, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(SMART32 @  31.8.2007,  14:23 Найти цитируемый пост)
Если посоветуете книжку по этой теме - буду благодарен)) А вообще-то   

книги по вашей теме не встречал, так как были нечто подобные задачи(использовал Visual C++ в C#), как вариант: поиск по форуму и гугл.
--------------------
В  каждой черной комнате есть выход - всегда есть выход с любой ситуации!
PM MAIL WWW ICQ   Вверх
jfx
Дата 25.10.2007, 11:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Совместное использование кода на C# и C++ в одном проекте вполне реально:
(Вот тут еще: http://msdn2.microsoft.com/en-us/library/x...4k(VS.80).aspx)

c.h
Код

#pragma once
bool calc(int n);


c.cpp
Код

#include "c.h"

bool calc(int n)
{
  if (n==0)
  {
   return true;
  }
  else
 {
  return false;
 }
}


wrapper.cpp
Код

#include "c.h"
namespace wrapper
{
  public ref class calcClass
  {
  public:
    static bool calc(int n)
    {
      return ::calc(n);
    }
  };
}


cs.cs
Код

using System;
using wrapper;
namespace test
{
  public class Program
  {
    public static void Main()
    {
      Console.WriteLine("num=");

  if(calcClass.calc(Convert.ToInt32(Console.ReadLine()))==true)
  {
   Console.WriteLine("num==0");
  }
  else
  {
   Console.WriteLine("num!=0");
  }

    Console.ReadLine();
    }
  }
}


Компилим все это следующим образом:
Код

cl /clr /c c.cpp
cl /clr /c wrapper.cpp
csc /addmodule:wrapper.obj /target:module /out:cs.netmodule cs.cs
link c.obj wrapper.obj cs.netmodule /LTCG /Subsystem:Console /entry:test.Program.Main /out:o.exe


И в догонку вопрос к гуру: возможно ли все это использовать непосредственно в студии, т.е. создание/отладка гибридных проектов, потому как что-то мелкое легко и из командной строки скомпилить, а вот более серьезный проект не очень удобно.
Спасибо.

Это сообщение отредактировал(а) jfx - 25.10.2007, 12:09
PM MAIL   Вверх
Bogdan1024
Дата 25.10.2007, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

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



Почитай в мсдне про unmanaged code.


--------------------
user posted image
PM MAIL   Вверх
jfx
Дата 25.10.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Спасибо, я читал, но так и не нашел ни одного места где бы говорилось как можно использовать native и managed code в одном VS проекте.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

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


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

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


 




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


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

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