1
我敢肯定的愚蠢的问题是一些不正确的语法。如何让dlsym使用返回值的函数?我在下面的代码中得到错误'无效转换为void *到LSError(*)()' - 试图获得编译linux的lightscribe示例程序希望我可以将它与OSX dylib链接(为什么地狱“T HP发布实际可可SDK LS才出现了什么6或7年了):???从dlsym()返回值的函数?
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);
我发现这个页面http://www.trilithium.com/johan/2004/12/problem-with-dlsym/,似乎解决了这样的问题,有必要将void *转换为函数指针。 Uugh .. – 2011-03-06 04:34:59
我发现了一种工作。使用dlopen打开文件后,我有一组行: LSError(* LS_DiscPrinter_ReleaseExclusiveUse)(LS_DiscPrinterHandle); LS_DiscPrinter_ReleaseExclusiveUse =(LSError(*)(void *))dlsym(LSHandle,“LS_DiscPrinter_ReleaseExclusiveUse”); 这是相当笨拙。 xCode不喜欢在我发现的第二页上使用typedef - 我不理解为'extern“C”typedef XML_Parser parsercreate_t(const XML_Char *);'根本没有提到XML_ParserStruct的返回类型。 – 2011-03-06 06:08:57