Доступ к библиотеке C ++ .lib из c # - PullRequest
10 голосов
/ 06 мая 2011

У меня есть файл библиотеки c ++ (.lib).Как я могу получить доступ к функциям в нем из C #?Я прочитал, что я могу обернуть файл библиотеки в DLL C ++ и выставить функции таким образом.Это единственный способ?Я не являюсь владельцем кода, поэтому мои возможности ограничены.

Ответы [ 3 ]

6 голосов
/ 06 мая 2011

Оберните C ++ lib сборкой C ++ / CLI.

C ++ / CLI позволяет смешивать управляемый и неуправляемый код, служа мостом между C # и собственным C ++. Это на самом деле очень просто и относительно легко сделать, хотя это может быть утомительно, если у вас есть много классов / функций для переноса.

Здесь является одним примером.

1 голос
/ 06 мая 2011

Вы не можете получить доступ к файлу библиотеки C ++ (.lib) напрямую.Лучший способ - иметь неуправляемую оболочку вокруг неуправляемого кода.Ссылка DllImportAttribute.

В справочном документе MSDN есть хороший пример его использования:

using System;
using System.Runtime.InteropServices;

class Example
{
    // Use DllImport to import the Win32 MessageBox function.
    [DllImport("user32.dll", CharSet = CharSet.Unicode)]
    public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);

    static void Main()
    {
        // Call the MessageBox function using platform invoke.
        MessageBox(new IntPtr(0), "Hello World!", "Hello Dialog", 0);
    }
}


Также примечание.Оболочка c ++ вокруг вашей библиотеки c ++, но лучше написать ее в неуправляемом коде c ++.
0 голосов
/ 06 мая 2011

Вы можете конвертировать lib в dll с помощью этого скрипта cmd .После этого вы сможете использовать DllImport для доступа к его функциям.Но вам пришлось немного его изменить, чтобы этот скрипт работал.

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