buffer-substring
вместе с region-beginning
и region-end
может сделать это.
Похоже, ваша сборка C # не разрешается во время выполнения. Находится ли ваша библиотека C # в том же каталоге, что и исполняемый файл (или его подкаталог)? Прошло некоторое время с тех пор, как я сделал это, но я припоминаю, что если ваша сборка не установлена в GAC, она должна находиться в каталоге (или подкаталоге), где находится ваш исполняемый файл, а не в местоположении библиотеки DLL, которая использует Это. Это связано с функциями безопасности .NET.
Если у вас все еще есть проблемы, вы можете попробовать разрешить сборку самостоятельно. В свой проект C ++ с поддержкой clr попробуйте добавить следующее:
using namespace System;
using namespace System.Reflection;
void Resolve()
{
AppDomain::CurrentDomain->AssemblyResolve +=
gcnew ResolveEventHandler(OnAssemblyResolve);
}
Assembly ^OnAssemblyResolve(Object ^obj, ResolveEventArgs ^args)
{
#ifdef _DEBUG
String ^path = gcnew String(_T("<path to your debug directory>"));
#else
String ^path = gcnew String(_T("<path to your release directory>"));
#endif
array<String^>^ assemblies =
System::IO::Directory::GetFiles(path, _T("*.dll"));
for (long ii = 0; ii < assemblies->Length; ii++) {
AssemblyName ^name = AssemblyName::GetAssemblyName(assemblies[ii]);
if (AssemblyName::ReferenceMatchesDefinition(gcnew AssemblyName(args->Name), name)) {
return Assembly::Load(name);
}
}
return nullptr;
}
Возможно, вам придется немного подправить код, чтобы он скомпилировался в вашем проекте. В моем случае я сделал две функции статическими методами класса в моем проекте с поддержкой clr. Просто убедитесь, что вы вызываете функцию Resolve ()
на ранней стадии вашего кода, то есть до того, как вы попытаетесь вызвать get_number_from_cs ()
.
Хотя использование COM - это вариант, он не обязательно. Вы на правильном пути со своим нынешним подходом. Если вы хотите, чтобы вас держали за руку, взгляните на этот пример CodeProject . Это тот, который я следую, чтобы мое неуправляемое приложение могло использовать мои управляемые сборки.