Некоторые вопросы об интеграции C ++ / CLI и C # - PullRequest
0 голосов
/ 25 ноября 2010

Спокойной ночи,

Я пытался сделать простую dll в C ++ / CLI для использования в моей библиотеке c #, используя что-то вроде следующего кода:

// This is the main DLL file.

#include "stdafx.h"

namespace Something
{
    public class Tools
    {
        public : int Test (...)
        {
            (...)
        }
    }
}

Я могу без проблем скомпилировать dll и загрузить ее в проект C #, а также использовать пространство имен Something и класс Tools из C #. Проблема в том, что когда я пытаюсь написать Tools.Test (что-то), я получаю сообщение об ошибке, в котором говорится, что у Tools нет определения для Test. Почему компилятор не может получить функцию, даже если она объявлена ​​общедоступной?

Также ... Могу ли я разделить класс между двумя проектами, наполовину написанными на C # и наполовину написанными на управляемом C ++?

Большое спасибо.

Ответы [ 3 ]

1 голос
/ 25 ноября 2010

C # может получить доступ только к управляемым классам C ++. Вам нужно будет использовать public ref class Tools, чтобы указать, что Tools - это управляемый класс, чтобы сделать его доступным из C #. Для получения дополнительной информации см MSDN .

Этот класс затем может использоваться в управляемом C ++ или C #. Обратите внимание, что управляемые классы C ++ могут также использовать собственные классы C ++ для внутреннего использования.

1 голос
/ 25 ноября 2010

Вы можете совместно использовать управляемый класс в проекте, но то, что вы написали в неуправляемом (то есть стандартном классе C ++. Используйте ключевое слово ref class, чтобы определить управляемый класс в C ++.

// This is the main DLL file.

#include "stdafx.h"

namespace Something
{
    public ref class Tools
    {
        public : int Test (...)
        {
            (...)
        }
    }
}
0 голосов
/ 25 ноября 2010

Функция не является статичной.попробуйте это в

var someTools = new Tools();
int result = someTools.Test(...);

или сделайте метод статическим:

public : 
   static int Test (...)
   {
            (...)
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...