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、何を探すか。
ご指摘いただければ幸いです。
よろしく アイバー