Вызов статического метода C # из управляемого потока C ++ / CLI - PullRequest
0 голосов
/ 15 декабря 2018

Кажется, у меня проблема с вызовом статических методов C #.

В настоящее время у меня есть 2 DLL, которые я вставляю в старое унаследованное приложение, а затем выполняю статический метод, как показано в коде ниже:

Module.cs

using System;

namespace Debugger
{
    public static class Module
    {
        public static void Initialize()
        {
            Console.WriteLine("YES");
        }
    }
}

dllmain.cpp

#include "stdafx.h"

#include <windows.h>

#pragma once

#pragma managed

using namespace System;
using namespace System::Reflection;
using namespace Debugger;

DWORD WINAPI MainThread(LPVOID param)
{
    AllocConsole();

    Console::WriteLine("Test");

    Debugger::Module::Initialize();

    FreeLibraryAndExitThread((HMODULE)param, 0);

    return 0;
}

#pragma unmanaged

HMODULE hModule;
BOOL APIENTRY DllMain(HINSTANCE hInstance, DWORD reason, LPVOID reserved) 
{
    switch (reason) 
    {
        case DLL_PROCESS_ATTACH:
            CreateThread(0, 0, MainThread, hModule, 0, 0);
            break;
        case DLL_PROCESS_DETACH:
            FreeLibrary(hModule);
            break;
    }
    return true;
}

В результате: я открываю консоль, выскакивает сообщение «Тест», но «ДА» нет »t - вместо этого приложение вылетает.

1 Ответ

0 голосов
/ 15 декабря 2018

Перемещение DLL в ту же папку, что и исполняемый файл, в который я вставляю исправленную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...