Даже после поиска я не мог найти ясного ответа на это. Это, по-видимому, несколько необычная проблема:
У меня есть встроенная реализация, которая должна идти в DLL. Эта DLL должна использоваться как для собственных приложений, так и для управляемых приложений.
Поэтому, если я напишу эту DLL в C++/CLI, я могу разоблачить две вещи:
Будет ли это работать? Смогут ли обычные нативные приложения загрузить эту DLL и вызвать открытые функции?
Собственная DLL скомпилирована как обычная собственная DLL (no/clr). Вызывающий C++/CLI-приложение /DLL использует класс C++ для загрузки DLL через LoadLibrary и GetProcAdress. Вам нужно, чтобы класс C++ отображал все функции родной DLL. Класс C++ действует как прокси-класс:
Пример:
Родная DLL hasa функция foo()
.
C++/CLI-код предоставляет метод foo, который выглядит так:
void MyProxy::foo() {
m_foo(); // m_foo is a function pointer to foo() in the DLL obtained via GetProcAddress.
}