DLL в C # и C ++ несколько отличаются, особенно в том, как они используются.C # использует сборки, в которые упакованы всевозможные метаданные, и скрывает большинство деталей.C ++ этого не делает, вы должны сообщить ему, что и как экспортируется.
Создание DLL обычно состоит из написания кода, затем для каждого класса или функции, которые вы хотите использовать (вне DLL), добавьте этот бит:
int __declspec(dllexport) function(int param);
class __declspec(dllexport) object;
Это «экспортирует» символы, делая их видимыми извне DLL.Это нужно делать только для тех, которые будут использоваться внешне, и для классов, только для класса (не для каждого метода).
При использовании DLL вы захотите включить заголовок со всемифункции, но с __declspec(dllimport)
примечаниями.Это скажет вашему коду, что они используются из внешней DLL.Вам необходимо предоставить компоновщик lib (созданный при компиляции DLL) в качестве входного файла, и все должно выстроиться в линию.
Простой способ справиться с этим:
#ifndef IMPORT_MYLIB
# define MYLIB_API __declspec(dllexport)
#else
# define MYLIB_API __declspec(dllimport)
#endif
int MYLIB_API function();
При использовании DLL в другом приложении просто #define IMPORT_MYLIB
и заголовок будет настроен соответствующим образом.
Для C # вам нужно просто создать библиотеку с открытыми классами, а затем добавить ее в качестве ссылки надругой проект.Затем вы можете использовать классы из него, и эти два файла будут автоматически связаны друг с другом (гораздо проще, но не всегда так же чисто, как метод C ++).
Обратите внимание, что библиотеки DLL являются специфическими для Microsoft, и их довольно много.маленькие детали, которые могут вас заинтересовать позже (как искать импорт и так далее).