2017-10-29 1 views
0

지금 며칠 동안 오류가 발생했지만 정확한 해결책을 찾을 수 없습니다. QT Creator에서 개발중인 C++ 응용 프로그램의 Windows에 cygwin과 함께 설치된 UMFPack 라이브러리를 사용하려고합니다.오류 : LNK1104 : QT Creator에서 'libumfpack.dlld.lib'파일을 열 수 없습니다.

/cygwin/lib/libumfpack.dll.a :> 라이브러리 추가 ... Library Adding Forum

을 내가 지적 라이브러리 파일에서 -

나는> 마우스 오른쪽 버튼을 클릭 내 프로젝트 -로 이동하여 라이브러리를 추가 다음 동적

QTCreator 자동으로 링크가 추가로 :/Cygwin에서는/usr//이 suitesparse

가 연동 형은

포함

에서 내가 지적 경로를 포함

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dll 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dlld 
else:unix: LIBS += -L$$PWD/../../../../cygwin64/lib/ -llibumfpack.dll 

INCLUDEPATH += $$PWD/../../../../cygwin64/usr/include/suitesparse 
DEPENDPATH += $$PWD/../../../../cygwin64/usr/include/suitesparse 

나는 다음과 같은 오류가 표시되는 프로젝트를 빌드 할 때, :

**:-1: error: LNK1104: cannot open file 'libumfpack.dlld.lib'** 

사람이 올바른 방향으로 날 지점 수 있습니까?

답변

0

MSVC와 gcc가 혼합되어 있습니다.

가져 오기 라이브러리가 ".lib"로 끝나기를 기대하는 MSVC를 사용 중입니다. 라이브러리가 가져 오기 라이브러리가 ".a"로 끝나기를 기대하는 gcc (MinGW 또는 Cygwin)에 의해 생성 된 동안.

하지만 형식이 동일하지 않으므로 이름을 변경해도 문제가 해결되지 않습니다. 최소한 ".dll"에서 ".lib"를 생성해야합니다. 그러나 이것은 라이브러리 API가 순수 C 언어 인 경우에만 작동합니다. C++ 이름을 변경하면 여러 컴파일러로 빌드 된 2 개의 바이너리에서 C++ 심볼을 사용할 수 없기 때문입니다.

API가 C++ 인 경우 MSVC로 작성된 라이브러리를 찾거나 라이브러리가 빌드 된 라이브러리를 사용하도록 컴파일러를 변경해야합니다.

+0

답장을 보내 주셔서 감사합니다. MSVC에서 GCC로 컴파일러를 변경하면 문제가 해결됩니다. –

+1

@HusseinHazime 예. Cygwin을 사용하는 것처럼 라이브러리를 빌드하는 데 사용 된 것과 동일한 컴파일러를 사용해야한다고 말했기 때문에 cygwin에서 제공하는 gcc 버전이 좋을 것입니다. –

관련 문제