Мне нужно использовать библиотеку dl для вызова функций libapt-pkg. Мне нужно вызвать метод pkgCacheFile::GetPkgCache(), который объявлен как встроенный. Проблема в том, что dlsym возвращает ошибку при попытке найти символ этой функции. nm тоже
его не показывает:
$ nm -DC /usr/lib/x86_64-linux-gnu/libapt-pkg.so | grep pkgCacheFile::
000000000009f400 T pkgCacheFile::BuildCaches(OpProgress*, bool)@@APTPKG_6.0
000000000009f820 T pkgCacheFile::BuildPolicy(OpProgress*)@@APTPKG_6.0
000000000009fb30 T pkgCacheFile::AddIndexFile(pkgIndexFile*)@@APTPKG_6.0
000000000009d510 T pkgCacheFile::RemoveCaches()@@APTPKG_6.0
000000000009f9c0 T pkgCacheFile::BuildDepCache(OpProgress*)@@APTPKG_6.0
000000000009f350 T pkgCacheFile::BuildSourceList(OpProgress*)@@APTPKG_6.0
000000000009b840 T pkgCacheFile::InhibitActionGroups(bool)@@APTPKG_6.0
000000000009fab0 T pkgCacheFile::Open(OpProgress*, bool)@@APTPKG_6.0
000000000009b6b0 T pkgCacheFile::Close()@@APTPKG_6.0
0000000000092be0 T pkgCacheFile::pkgCacheFile(pkgDepCache*)@@APTPKG_6.0
0000000000092b80 T pkgCacheFile::pkgCacheFile()@@APTPKG_6.0
0000000000092be0 T pkgCacheFile::pkgCacheFile(pkgDepCache*)@@APTPKG_6.0
0000000000092b80 T pkgCacheFile::pkgCacheFile()@@APTPKG_6.0
00000000000916e0 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0
0000000000091560 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0
0000000000091560 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0
Можно ли найти и вызвать встроенную функцию с помощью библиотеки dl? Действительно ли компилятор генерирует символы для встроенных функций?
Мне нужно использовать библиотеку dl для вызова функций libapt-pkg. Мне нужно вызвать метод pkgCacheFile::GetPkgCache(), который объявлен как встроенный. Проблема в том, что dlsym возвращает ошибку при попытке найти символ этой функции. nm тоже его не показывает: [code]$ nm -DC /usr/lib/x86_64-linux-gnu/libapt-pkg.so | grep pkgCacheFile:: 000000000009f400 T pkgCacheFile::BuildCaches(OpProgress*, bool)@@APTPKG_6.0 000000000009f820 T pkgCacheFile::BuildPolicy(OpProgress*)@@APTPKG_6.0 000000000009fb30 T pkgCacheFile::AddIndexFile(pkgIndexFile*)@@APTPKG_6.0 000000000009d510 T pkgCacheFile::RemoveCaches()@@APTPKG_6.0 000000000009f9c0 T pkgCacheFile::BuildDepCache(OpProgress*)@@APTPKG_6.0 000000000009f350 T pkgCacheFile::BuildSourceList(OpProgress*)@@APTPKG_6.0 000000000009b840 T pkgCacheFile::InhibitActionGroups(bool)@@APTPKG_6.0 000000000009fab0 T pkgCacheFile::Open(OpProgress*, bool)@@APTPKG_6.0 000000000009b6b0 T pkgCacheFile::Close()@@APTPKG_6.0 0000000000092be0 T pkgCacheFile::pkgCacheFile(pkgDepCache*)@@APTPKG_6.0 0000000000092b80 T pkgCacheFile::pkgCacheFile()@@APTPKG_6.0 0000000000092be0 T pkgCacheFile::pkgCacheFile(pkgDepCache*)@@APTPKG_6.0 0000000000092b80 T pkgCacheFile::pkgCacheFile()@@APTPKG_6.0 00000000000916e0 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0 0000000000091560 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0 0000000000091560 T pkgCacheFile::~pkgCacheFile()@@APTPKG_6.0 [/code] Можно ли найти и вызвать встроенную функцию с помощью библиотеки dl? Действительно ли компилятор генерирует символы для встроенных функций?