Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Проект С++ в солюшене на С#


Автор: Andrey44 27.10.2009, 11:19
Вобщем вопрос в следующем - Хочу окно с кнопочками написанное на С# и есть интерфейс в длл написаный на С++
есть *.h файл в котором оописан интерфейс например
Код

struct __declspec(..............) IXmlReader : public IUnknown
{
   virtual void GetStr(....)PURE;
}
extern "C"
{
bool CreateXmlReader(IXmlReader**);
}

Внимание вопрос! Как мне все это можно использовать в проекте на С#. То есть я хочу на нажатие кнопок использовать методы IXmlReader.
Как объявить IXmlReader, как его создать?

Автор: ILYA609 27.10.2009, 21:07
Объясню на примере:

Бибилиотека на С++, компилишь в DLL (TestLibrary.dll)

Код

#include "stdafx.h"
extern "C" __declspec(dllexport) double Calc(double a,double b)
        {
            return a+b;
        }


В шарпе пишешь:

Код

namespace Test
{
    class Program
    {
        [DllImport("TestLibrary.dll")] // Если dll лежит в той же папке что и exe'шник C#
        private static extern double Calc(double a, double b);
        
        static void Main()
        {
            double summ = Calc(2,3);
        }
    }

Автор: Andrey44 28.10.2009, 08:25
Код

namespace Test
{
    class Program
    {
        [DllImport("TestLibrary.dll")] // Если dll лежит в той же папке что и exe'шник C#
        private static extern bool CreateXmlReader(IXmlReader**);
        
        static void Main()
        {
            IXmlReader* xml;
            CreateXmlReader(&xml);
        }
    }

Окуда оно узнает что такое IXmlReader???

Автор: agapitPSG 30.10.2009, 07:04
Необходимо добавить референс на библиотеку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)