2

私は、64 ビットの Windows 7 マシンで C++ IDE を動作させることに取り組んできました。C/C++ 開発者向けの Eclipse IDE を使用する 32 ビット プログラムと 64 ビット プログラムの非互換性が主な原因で、イライラしています。

さて、ようやく HelloWorld のコンパイルができたので、Xalan を自分のプロジェクトに追加したいと思います。ソースとバイナリの両方をダウンロードしました。ソースを MinGW (私の選択したコンパイラ) でコンパイルすることは不可能でしたが、xerces-c_2.lib のようなバイナリ ディレクトリにある .lib ファイルを使用することに取り組んでいます。これらを私の C++ プロジェクトにリンクすることはできますか?

ありがとう!

編集更新 2011-08-30

運がなかったのですが、アップデートを投稿したかったのです。これをEclipseの外で構築しようとしましたが、成功しませんでした。Xalan-C にバンドルされている StreamTransform.cpp の例を作成しようとしています。これは、関連するヘッダー ファイルがあるディレクトリにあります: XalanMemoryManagerImpl.hpp

次に、次の Makefile を作成しました。

OBJS = StreamTransform.o
CC = g++
DEBU \G = -g
CFLAGS = -Wall -c $(DEBUG)
LFLAGS = -Wall $(DEBUG)
LIBDIR = -LC:\Development\xslTests\stream\lib
LIBS = -lxerces-c_2 -lxerces-depdom_2 -lXalan-C_1 
INCDIR = -IC:\Libs\xerces-c-windows_2000-msvc_60\include -IC:\Libs\Xalan-C_1_10_0-win32-msvc_60\include

all: transformer

transformer: $(OBJS)
  $(CC) $(LFLAGS) $(OBJS) -o transformer $(LIBDIR) $(LIBS) 

StreamTransform.o : StreamTransform.cpp XalanMemoryManagerImpl.hpp
  $(CC) $(INCDIR) $(CFLAGS) StreamTransform.cpp

ベース ターゲット StreamTransform.o は正常に実行され、出力ファイルが生成されますが、トランスフォーマーは停止します。ここで発生しているエラーは、Eclipse で発生していたものと同じです。"未定義参照エラーの束:

C:\Users\x_walia\workspace\TCXMLTransformer\Debug/../StreamTransform.cpp:115: 「xalanc_1_10::XSLTInputSource::XSLTInputSource(std::istream*, xercesc_2_7::MemoryManager&)」への未定義参照

StreamTransform.o: 関数main': C:/Libs/Xalan-C_1_10_0-win32-msvc_60/include/xalanc/XSLT/XSLTResultTarget.hpp:103: undefined reference to内 xalanc_1_10::XalanMemMgrs::getDefaultXercesMemMgr()'

私には、これはある種のライブラリ リンク エラーがあるように見えますが、何ですか? 私が使用している Windows バイナリ ディストリビューションに 6 つの .lib ファイルがバンドルされていることに注意してください。それらの半分には、デバッグ ライブラリを表すxerces-c_2* d *のように、_d という接尾辞が付いています。これらを含めたり省略したりしてみましたが、うまくいきませんでした。

このプロジェクトは放棄されたと聞きましたが、Windows 7 64 ビット マシンでコンパイルしているため、問題が発生しているだけなのだろうか...

4

2 に答える 2

0

Microsoft Visual C++ でビルドされた C++ ライブラリを、mingw でビルドされたオブジェクトまたはライブラリにリンクすることはできません。ABI に互換性がありません。

私の好みの検索エンジンでは、既存の Xalan/Xerces mingw バイナリへのリンクが提供されないため、おそらく自分でビルドする必要があります。

于 2011-09-14T12:45:50.600 に答える