Я пытаюсь связать библиотеку с открытым исходным кодом с одним из моих проектов. Библиотека неуправляемая (называется Tetgen), и мой проект находится на управляемом C ++.
Мой проект распознает заголовок и может использовать функции, определенные в нем. Но я получаю ошибку 2028 каждый раз, когда он хочет получить доступ к некоторым методам, определенным в .cpp:
ошибка LNK2028: неразрешенный токен (0A000E20) "public: void __thiscall tetgenio :: save_nodes (char const *)" (? Save_nodes @ tetgenio @@ $$ FQAEXPBD @ Z), на который ссылается функция "public: virtual bool __thiscall ForwardModelingPlugin: : CustomMeshVol3D :: tesselate (void) "(? Tesselate @ CustomMeshVol3D @ ForwardModelingPlugin @@ $$ FUAE_NXZ)
Я попытался создать тестовую функцию:
int tetgenio::Test(int i) {
return i;
}
... и другая функция Testbis, определенная в заголовке. Тестбис работает, Тест выдает ошибку 2028.
Я сравнил .obj моего проекта и созданный .lib, а для lib есть:
save_nodes@tetgenio@@QAEXPAD@Z
Но в .obj это:
save_nodes@tetgenio@@$$FQAEXPBD@Z in the .obj
Кажется, они не одинаковы.
Все компилируется с / clr. Я попытался создать .lib и .dll, с одинаковыми результатами в любом случае.