Undefined reference существующей функции?

195
07 января 2019, 21:10

Цель - собрать код с использованием OpenCASCADE (OCE) c crosscompile под windows. Для этого использую mxe с пакетом oce.

Сборка mxe и всех зависимостей прошла без проблем. Простые примеры собираются и запускаются. Но возникла сложность при линковке OCE:

Пример кода

#include <TopoDS.hxx>
#include <BRepMesh_IncrementalMesh.hxx>
int main(){
  TopoDS_Shape shape;
  BRepMesh_IncrementalMesh(shape, 0.1);
  return 0;
}

Собираю:

/usr/src/mxe/usr/bin/x86_64-w64-mingw32.static-g++ -o code ../tmp/code.cxx \\
-I /usr/src/mxe/usr/x86_64-w64-mingw32.static/include/oce \\
-L /usr/src/mxe/usr/x86_64-w64-mingw32.static/lib/ \\
-lTKMesh -lTKPrim -lTKTopAlgo -lTKGeomAlgo -lTKBRep -lTKGeomBase -lTKG3d -lTKG2d -lTKMath -lTKernel

Получаю ошибку:

/tmp/ccCSrdq9.o:code.cxx:(.text$_ZNK15BRepMesh_Vertex8HashCodeEi[_ZNK15BRepMesh_Vertex8HashCodeEi]+0x65): undefined reference to `__imp__Z8HashCodedi'
collect2: error: ld returned 1 exit status

Искомая функция Z8HashCodedi находится в libTKernel.a:

nm /usr/src/mxe/usr/x86_64-w64-mingw32.static/lib/libTKernel.a | grep Z8HashCodedi
0000000000000000 t _GLOBAL__sub_I__Z8HashCodedi
0000000000000010 T _Z8HashCodedi  << Standard_Real.cxx.obj
                 U _Z8HashCodedi  << TColStd_MapRealHasher_0.cxx.obj

Вопрос первый - почему nm показывает две строчки с совпадением?

Вопрос второй - почему компилятор не находит функцию?

Упростил код сведя к вызову проблемной фукнции

#include <Standard_Integer.hxx>
#include <Standard_Real.hxx>
int main() {
    Standard_Real r = 1.e0;
    Standard_Integer i = 1;
    return HashCode(r,i);
}

И в команде сборки оставил только -lTKernel, результат всё тот же.

READ ALSO
Ошибка expected unqualified-id before &#39;else&#39;|

Ошибка expected unqualified-id before 'else'|

Не работает кодХотя должен

155
Приложение qt не работает русский язык

Приложение qt не работает русский язык

пишу в qt creator, создал консольное приложение без qt, но русские буквы выводятся крокозябрами:

168
На чем написана 1С?

На чем написана 1С?

Зашел разговор про 1с и я услышал следующее мнение - что 1с написана на ЯП Русского разлива, те

160