2015-01-14 5 views
0

Я использую одну программную среду, загруженную с предварительного набора данных (http://www.jilp.org/dpc/prefetching_framework_description.html). Все работает нормально, но каждый раз, когда я пытался вызвать API, фреймворк при условии, что система выдает некоторую ошибку. Например, в файле interface.h он предоставляет один API: void SetPrefetchBit (уровень UINT32, CacheAddr_t addr); Я называю это в своих кодах. Коды могут быть скомпилированы и связаны успешно. Но когда я запускаю код, он выкидывает ошибку: PREF_KIT/работает /../ pin/intel64/bin/pinbin: ошибка поиска символа:/PREF_KIT/работает /../ bin/CMPsim.usetrace: undefined symbol: _Z14SetPrefetchBitjyОшибка при вызове API при запуске симулятора

Я действительно озадачен ошибкой. Поскольку коды могут быть скомпилированы и связаны с предоставленной статической lib правильно, что означает, что API должен быть предоставлен. Тогда что означает ошибка?

Любое предложение или рекомендация оцениваются. Заранее спасибо

ответ

0

У меня такая же точная проблема. Я работаю на 64-битном Ubuntu и умею компилировать, но когда я запускаю, я получаю ту же ошибку выше. Когда я бегу нм с помощью следующей команды:

nm libCMPsim64.a | c++filt | grep GetPrefetch 

Я понимаю, что есть неопределенная ссылка в самой библиотеке ...

0000000000001790 T GetPrefetchBit(unsigned int, unsigned long) 
       U CACHE::GetPrefetchBit(unsigned long, unsigned int) 
0000000000000000 r GetPrefetchBit(unsigned int, unsigned long)::__PRETTY_FUNCTION__ 
00000000000003b0 T CACHE::GetPrefetchBit(unsigned long, unsigned int) 
+0

Да вы нашли, где есть проблема, я думаю:) Вы можете решить проблему, изменив объявление функции GetPrefetchBit на то, что вы видели в библиотеке – user3312479

Смежные вопросы