我敢肯定,愚蠢的问题是一些不正确的语法。如何让 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);