है, मैंने हाल ही में एक यूबंटू मशीन पर hdf5 लाइब्रेरी स्थापित की है, और अब निर्यात किए गए कार्यों से जुड़ने में समस्या आ रही है। मैं readHDF.cpp एक साधारण परीक्षण स्क्रिप्ट लिखा मुद्दा समझाने के लिए:g ++ संकलन त्रुटि: साझा साझा लाइब्रेरी फ़ंक्शन के लिए अनिर्धारित संदर्भ जो
#include <hdf5.h>
int main(int argc, char * argv[])
{
hid_t h5_file_id = H5Fopen(argv[1], H5F_ACC_RDWR, H5P_DEFAULT);
return 0;
}
संकलन आदेश
g++ -Wl,-rpath,$HOME/hdf5/lib -I$HOME/hdf5/include \
-L$HOME/hdf5/lib -l:$HOME/hdf5/lib/libhdf5.so readHDF.cpp
जो निम्नलिखित त्रुटि देता है
/tmp/cc6DXdxV.o: In function `main':
readHDF.cpp:(.text+0x1f): undefined reference to `H5check_version'
readHDF.cpp:(.text+0x3c): undefined reference to `H5Fopen'
collect2: ld returned 1 exit status
मैं उलझन में हूँ क्योंकि एनएम कमांड कहता है कि फ़ंक्शन निर्यात किया गया है:
nm -C $HOME/hdf5/lib/libhdf5.so | grep H5check_version
जो रिटर्न
0000000000034349 T H5check_version
और H5Fopen
के लिए एक समान परिणाम। क्या गलत हो सकता है पर कोई विचार? सुनिश्चित नहीं हैं कि यह मदद करता है, लेकिन अगर मैं बाहर टिप्पणी स्क्रिप्ट के H5Fopen
भाग है, तो यह ठीक संकलित करता है, तो:
#include <hdf5.h>
int main(int argc, char * argv[])
{
hid_t h5_file_id;// = H5Fopen(argv[1], H5F_ACC_RDWR, H5P_DEFAULT);
return 0;
}
इसके अलावा जो इस तरह के रूप में विभिन्न अजगर मॉड्यूल द्वारा किया जाता है सर्वर पर स्थापित HDF5 के कई संस्करण हैं h5py और तालिकाओं, लेकिन मैं उनमें से कोई भी काम करने के लिए नहीं मिला, इसलिए मैंने इस संस्करण को अपनी स्थानीय निर्देशिका में स्थापित किया और g ++ लिंकर के लिए rpath विकल्प बदल दिए।
अजीब। लिपि से पहले '-lhdf5' डालकर, और सब कुछ ठीक काम करता है। जब मैं इसे स्क्रिप्ट के बाद रखता हूं, तो यह पुस्तकालय त्रुटियों को देता है। – Mathias711
मैं इसे पर्याप्त रूप से ऊपर नहीं उठा सकता। धन्यवाद! – stormbreaker
+500 अगर मैं – johnjg12