Member 10936477 Ответов: 1

Как вызвать DLL-методы в c++. Библиотека DLL на C#


typedef int (FAR PASCAL *RUNSCRIPT_FUNCTION)(int, LPCSTR);

int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpszCmdParam, int nCmdShow)
{
    RUNSCRIPT_FUNCTION  RunScript;
    int  iReturn;

    // Load the DLL
    HINSTANCE hinstLib = LoadLibrary("C:\\Program Files\\Example.dll");
    if(hinstLib == NULL)
    {
        MessageBox(NULL, "Unable to load library", "Error", MB_OK|MB_ICONERROR);
        return 0;
    }

    // Get the function pointer
    RunScript = (RUNSCRIPT_FUNCTION)GetProcAddress(hinstLib, "RunScript");
    if(RunScript == NULL)
    {
        FreeLibrary(hinstLib);
       
        return 0;
    }
    
    // Call the function with '1' as a parameter
    iReturn = (*RunScript)(1, "Hello");

    // Unload the DLL
    FreeLibrary(hinstLib);
    
    return iReturn;
}


Что я уже пробовал:

Я не могу вызывать методы в visual c++, класс и методы присутствуют в dll, а dll неуправляема.

NotPolitcallyCorrect

https://www.google.com/search?м=с%2Б%2В+звонит+на C%23+ДЛЛ

1 Ответов

Рейтинг:
0

KarstenK

Это не должно быть большой проблемой, но вы должны обратить внимание на проблему строки (и памяти). Использовать для вызова библиотеки DLL в _bstr_t. Объясняется использование подается эта статья.

Если вы работаете со строкой в среде выполнения C#, вам нужно сделать копию.

Совет: вы можете установить точки останова в библиотеке dll C# для отладки, если эта библиотека является отладочной сборкой.


Member 10936477

извините, может быть, я не в состоянии заставить вас понять, моя проблема в том, что я вызывал c# dll в visual c++ и не мог передать параметр или вызвать методы.