私は、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 ビット マシンでコンパイルしているため、問題が発生しているだけなのだろうか...