Как мне связать символы C в моей программе на C++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как мне связать символы C в моей программе на C++?

Сообщение Anonymous »

Я работаю над проектом C++ для обработки 3D-сеток. (https://github.com/blackears/cyclops_tetrahedralizer). Я хочу добавить общедоступный файл C, который реализует некоторые продвинутые математические вычисления с плавающей запятой. (https://github.com/libigl/libigl-predicates)
Я использую cmake для сборки проекта и столкнулся с проблемой, когда он говорит, что не может найти символ для ссылки из файла предикатов.

Код: Выделить всё

unresolved external symbol orient3d referenced in function "public: static double __cdecl CyclopsTetra3D::Math::test_orient_3d(struct CyclopsTetra3D::Vector3 const &,struct CyclopsTetra3D::Vector3 const &,struct CyclopsTetra3D::Vector3 const &,struct CyclopsTetra3D::Vector3 const &)" (?test_orient_3d@Math@CyclopsTetra3D@@SANAEBUVector3@2@000@Z)
Этот метод

Код: Выделить всё

class Math {
public:
...

static real test_orient_3d(const Vector3& pa, const Vector3& pb, const Vector3& pc, const Vector3& pd) {
double a[3] = { pa.x, pa.y, pa.z };
double b[3] = { pb.x, pb.y, pb.z };
double c[3] = { pc.x, pc.y, pc.z };
double d[3] = { pd.x, pd.y, pd.z };

return orient3d(a, b, c, d);
}

Код: Выделить всё

orient3d
определен в файле predicates.c.
По сути, я просто пытаюсь создать функцию-оболочку в своей математической библиотеке для этого метода C, но у меня есть только базовое представление о том, как собрать файл CMakeLists.txt.
Что мне нужно изменить, чтобы этот проект можно было связать?

Изменить:
Вот простой файл cpp, вызывающий ошибку ссылки:

Код: Выделить всё

unresolved external symbol orient3d referenced in function "void __cdecl test2(void)" (?test2@@YAXXZ)

Код: Выделить всё

#include "predicates/predicates.h"

void test2() {
double a[3];
double b[3];
double c[3];
double d[3];
orient3d(a, b, c, d);
}

int main(int argc, char **argv)
{
test2();
return 0;
}
Я думаю, это может быть связано с тем, как cmake настраивает процесс сборки. Я не знаю, почему редактор удалил этот тег.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -c-program
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»