Глупый вопрос, который, я уверен, немного синтаксис, который не так. Как заставить dlsym работать с функцией, которая возвращает значение? Я получаю сообщение об ошибке «недопустимое преобразование void * в LSError (*) ()» в следующем коде - пытаюсь скомпилировать пример программы linux lightscribe, надеясь, что смогу связать ее с OSX dylib (почему ад выиграл HP выпускает настоящий Cocoa SDK? LS существует всего 6 или 7 лет?):
void* LSHandle = dlopen("liblightscribe.1.dylib", RTLD_LOCAL|RTLD_LAZY);
if (LSHandle) {
LSError (*LS_DiscPrinter_ReleaseExclusiveUse)() = dlsym(LSHandle, "LS_DiscPrinter_ReleaseExclusiveUse");
..
lsError = LS_DiscPrinter_ReleaseExclusiveUse( pDiscPrinter);