LNK 2028 - 2019 / Управляемый и неуправляемый C ++?(VS 2008) - PullRequest
0 голосов
/ 28 июня 2010

Я пытаюсь связать библиотеку с открытым исходным кодом с одним из моих проектов. Библиотека неуправляемая (называется 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, с одинаковыми результатами в любом случае.

1 Ответ

0 голосов
/ 07 июля 2010

Это произошло из-за проблем с компоновщиком, связывающих разные папки с одинаковыми файлами.

...