в cpphost:
Код: Выделить всё
auto lib = ::LoadLibrary(L"ToCsharp.dll");
if (lib != nullptr)
{
typedef Facade::Facade* (*GETINSTANCE)();
auto func = (GETINSTANCE)::GetProcAddress(lib, "GetMyInstance");
auto instance = func();
instance->CallMe();
}
< /code>
in tocsharp: < /p>
namespace Facade
{
class Facade2 final : Facade
{
public:
static Facade& GetInstance() {
static Facade2 facade2;
return facade2;
}
public:
void CallMe() { class1->CallMe(); }
private:
Facade2() { class1 = Lib::Class1::GetInstance(); }
gcroot class1;
};
}
extern "C" __declspec(dllexport) Facade::Facade* GetMyInstance()
{
return &Facade::Facade2::GetInstance();
}
< /code>
in lib: < /p>
public class Class1
{
private static Class1 _singletonInstance = null;
public static Class1 GetInstance()
{
_singletonInstance ??= new Class1();
return _singletonInstance;
}
public void CallMe()
{
File.AppendAllText("c:/my/CpptoCsharp", $"{DateTime.UtcNow}: {nameof(CallMe)}\n");
// var bmp = new System.Drawing.Bitmap("c:/my/no.bmp");
}
}
Unhandled exception at 0x00007FF9BB19567C (KernelBase.dll) in CppHost.exe: 0xE0434352 (parameters: 0xffffffffff80070002, 0x000000000000000000, 0x0000000000000000, 0x0000000000000000, 0x00007ff97e1c0000). < /P>
< /blockquote>
, если я не стесняюсь, но позже использую такую же технику, чтобы использовать функцию (lib2). Microsoft.windowsdesktop.app < /code> Я получаю это < /p>
Указанная структура 'microsoft.windowsdesktop.app' не присутствует в ранее загруженном runtime.failted для запуска времени .net. Код ошибки: 0x800080a5exception, выброшенное по адресу 0x00007ff9bb19567c в cpphost.exe: microsoft c ++ Исключение: Long at memory manta Растровый карта .
Что это может быть?
Подробнее здесь: https://stackoverflow.com/questions/797 ... esktop-app
Мобильная версия