MPIを使用して並列プロセスを作成するプロジェクトに取り組んでいます。各プロセスはdlopen()を使用して、共有オブジェクトライブラリとしてビルドされたモジュールをロードします。私が書いているモジュールの1つは、サードパーティライブラリ(HDF)を使用しています。プログラムを実行すると、dlopenはエラーをスローします:dlopenが失敗しました:/home/jwomble/QTProjects/SurrogateModule/libsurrogate.so:未定義のシンボル:H5T_NATIVE_INT32_g
未定義のシンボルはHDFライブラリにあります。HDFライブラリからシンボルをロードするにはどうすればよいですか?
現在、私のmakeファイルは次のようになっています。
CC = mpicc
INCDIR = -I /home/jwomble/QTProjects/STARExecutive/src/star_comm \
-I /home/jwomble/QTProjects/STARExecutive/src/executive \
-I /home/jwomble/QTProjects/Star \
-I ./phdf/include
CFLAGS = -Wall -rdynamic -g -fPIC $(INCDIR)
all: libsurrogate.so
libsurrogate.so: SurrogateModule.o
$(CC) -shared --export-dynamic -o $@ $<
SurrogateModule.o: SurrogateModule.c
$(CC) $(CFLAGS) -lhdf5 -c $<
ありがとう!