Может кто-нибудь объяснить, почему я получаю следующие ошибки при компиляции кода, показанного ниже (и как это исправить)
ошибка C3767: 'ManagedClass::SetString'
: функции-кандидаты недоступны e: \ Temp \ ManagedCpp \ ManagedCpp \ ManagedCpp.cpp 24 ManagedCpp
ошибка C3767: 'ManagedClass::GetString'
: функции-кандидаты недоступны e: \ Temp \ ManagedCpp \ ManagedCpp \ ManagedCpp.cpp 26 ManagedCpp
Я прочитал следующий похожий вопрос,
C ++ CLI error C3767: функции-кандидаты недоступны
в котором говорится
Я рекомендую использовать вместо этого управляемый тип System::String^
во всех ваших общедоступных API. Это также гарантирует, что ваша библиотека легко вызывается из других языков CLR, таких как c #
Именно это я и сделал (кстати, это тестовый код, используемый для извлечения той же ошибки компиляции в гораздо большей DLL смешанного режима).
(Проект является проектом VS2008 C ++ / CLI, т. Е. В меню выберите Файл-> Новый проект-> Visual C ++ -> Консольное приложение CLR.)
Спасибо за вашу помощь.
using namespace System;
static public ref class ManagedClass
{
static public int SetString(String^ s)
{
str = s;
}
static public String^ GetString()
{
return str;
}
static String^ str ;
};
int main(array<System::String ^> ^args)
{
String^ test ="Here";
ManagedClass::SetString(test);
String^ j= ManagedClass::GetString();
return 0;
}