2017-10-29 39 views
0

私は数日間エラーに苦しんでいましたが、正しい解決策を見つけるのは幸運でした。 CygwinにインストールされたUMFPackライブラリをQT Creatorで開発しているC++アプリケーションのウィンドウに使用しようとしています。エラー:LNK1104:QT Creatorでファイル 'libumfpack.dlld.lib'を開くことができません

私は私のプロジェクト - >右クリックに行くことによって、ライブラリを追加 - > [ライブラリを追加... Library Adding Forum

私は指さライブラリファイルに:

/cygwin/lib/libumfpack.dll.a

を:リンケージタイプ/ cygwinのは/ usr /含める/ suitesparse

::次のようにダイナミック

がQTCreatorは自動的にリンクを追加

では、と私は指摘インクルードパス私はプロジェクトをビルドするとき

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を使用しています。ライブラリはgcc(MinGWまたはCygwin)によって生成されましたが、インポートライブラリは ".a"で終わることが予想されます。

名前の変更だけでは、形式が同じではないため、問題は解決しません。少なくとも ".dll"から ".lib"を生成する必要があります。しかし、これはライブラリAPIが純粋なC言語である場合にのみ有効です.C++の名前のマングリングは、異なるコンパイラでビルドされた2つのバイナリ全体でC++シンボルを使用できないためです。

APIがC++の場合は、MSVCでビルドされたライブラリを見つけるか、ビルドされたライブラリを使用するようにコンパイラを変更する必要があります。

+0

MSVCからGCCにコンパイラを変更すると問題が解決しますので、返信いただきありがとうございますか? –

+1

@HusseinHazimeはい。 Cygwinを使用しているので、ライブラリを構築するために使用したのと同じコンパイラを使用しなければならないと言ったので、cygwinによって提供されるgccバージョンは良いはずです。 –

関連する問題