2016-10-28 8 views
0

WindowsでACEを使用する際に問題が発生しました(OS-XとLinux(Ubuntu)の両方で大きな成功を収めています)ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m)機能でクラッシュします。ACE(Adaptive comminucations framework)wirh QTとMSVC2013(VC12)

OSは、Windows 7の64ビットである。 私も(しようとした64ビット)を32ビットアプリケーションを構築しています。 私はACEの32ビット・ライブラリーを構築するためにhttp://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#win32を追った。 ACEバージョン6.4.0です。ACE_vc12.sln 私のアプリケーション(ACEを使用するOS-Xで動作)は、MSCV2013 32ビット構成を使用するように設定されたキットを使用してQT5.7.0(32ビットバージョン)でビルドされています。

QTでの私のプロジェクト.PROファイルは(いくつかの難読化して)次のようになります。

`QT += core 
QT += gui 
CONFIG += debug 
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 
ACE = c:/ACE_wrappers 
PathToIs = //Users/xxx/Dropbox/_Projects/xxx/is/yyy 
LIBS = -L$$ACE/lib -lACEd -lpthread 
TARGET = ZZZ_CSCI 
include($$PathToIs/lib/ace.pri) 
include($$PathToIs/Some_other.pri) 
include($$PathToIs/Yet_another_pri.pri) 
INCLUDEPATH += $$PathToIs/lib/shared 
INCLUDEPATH += $$PathToIs/lib/utilities 
TEMPLATE = app 
SOURCES += main.cpp \ 
../../../../../lib/utilities/windows/UtilitiesWindows.cpp 
HEADERS += \ 
$$PathToIs/lib/shared/GlobalDefs.h \ 
../../../../../lib/utilities/Utilities.h 
INCLUDEPATH += C:/ACE_wrappers/include 
DEPENDPATH += C:/ACE_wrappers/include` 

-lpthreadは、ライブラリが見つからないリンクエラーが発生します。 Windowsの場合はどうすればいいですか(Linuxのosx固有のライブラリだと思います)?絶望のうち

LINK : fatal error LNK1104: cannot open file 'pthread.lib' 

、私はもちろん、リンカエラーを削除しますが、アプリケーションが起動するときに、私は以下の機能でクラッシュを取得しており、完全に-lpthreadを削除した:

ACE_OS::thread_mutex_lock (ACE_thread_mutex_t *m) 
{ 
    // ACE_OS_TRACE ("ACE_OS::thread_mutex_lock"); 
#if defined (ACE_HAS_THREADS) 
# if defined (ACE_HAS_WTHREADS) 
    ::EnterCriticalSection (m); 
    return 0; 
# else 
    return ACE_OS::mutex_lock (m); 
# endif /* ACE_HAS_WTHREADS */ 
#else 
    ACE_UNUSED_ARG (m); 
    ACE_NOTSUP_RETURN (-1); 
#endif /* ACE_HAS_THREADS */ 
} 

QT内のデバッガのカーソルが行を指している

私の控除は、ACEが正常に機能するためには、いくつかのpthreadライブラリがWindows上で必要であるということですが、 tly、何を探すか。

ご指摘いただければ幸いです。

よろしく アイバー

答えて

0

ように、Web上のトローリングのビットの後、私は会社GlobeTOMは、ACEを使用していることを見て、私は所有者のいずれかを知ることが起こります。彼に電話をして、彼らはWindows用のpthreadsを使用したことを示しました。

WWWWからそれを得て、私も実際にそれを試したことが分かりました。その道がうまくいくことを知って、大きな助けとなりました。

これは最新のファイルを使用し、Windows/System32にDLLを、MSVC2013のVCフォルダにlibとインクルードファイルを配置しました。私は32bitライブラリを使用しました。

さらに、.proにlibを含めるように編集しました。実際にはQTでプロジェクトを右クリックして「ライブラリを追加」を選択し、「外部ライブラリ」を選択して.libファイルを参照しました。これにより、セクションが.proファイルに追加されます。必要な選択肢がいくつかあります。

したがって、使用するlibはpthreadVC.libです。

ポインタのGlobeTOMに感謝します。

アイボア

関連する問題