У меня есть сторонняя библиотека в качестве исходного кода. Он поставляется с проектом Visual Studio, который создает из него .lib.
Я хочу получить доступ к функциональности из C #, поэтому я скопировал проект и изменил его, чтобы создать DLL.
DLL не содержала экспортируемых функций, поэтому я также создал файл определения модуля (.def) и добавил нужные мне функции в разделе EXPORTS.
Это работает для всех функций, которые объявлены в extern "C"
блоках. Однако некоторые функции, которые мне нужны, объявлены вне этих блоков.
Если я добавлю их в раздел ЭКСПОРТ, я получу ошибку LNK2001 unresolved external symbol XYZ
: (
Я не хочу менять исходный код сторонней библиотеки, если я могу этого избежать.
Какой самый элегантный и, надеюсь, самый простой способ получить доступ к этим функциям?
Редактировать
Еще одно уточнение: насколько я могу судить, в интерфейсе, который я хочу раскрыть, не задействованы функции C ++. Честно говоря, я не понимаю, почему сторонние авторы не просто включили несколько оставшихся функций в блоки extern "C"
. Эти функции находятся внизу файла заголовка, возможно, тот, кто их добавил, просто допустил ошибку и вывел их за пределы extern "C"
блоков.