我正在尝试在Mac OS X 10.6上编译一个简单的DLL,并且对于声明DLL为全世界提供使用的函数的正确方法感到困惑。根据可靠来源的示例代码,我提出了:
__declspsec(dllexport) pascal int ReturnTheNumberFive(void)
但gcc barfs就可以了。示例代码实际上是MACPASCAL和DLLExport,我假设是宏。我浏览了#defines的示例代码,SDK等,并插入了我发现的内容。这些定义可能已经埋没在#ifs中,所以我发现并不好。不合逻辑地,如果我只是做明显的并使用DLLExport和MACPASCAL,编译器也会barfs,所以这是没有解决方案。
使应用程序可以使用DLL函数的正确方法是什么?
答案 0 :(得分:5)
默认情况下,所有符号都在.dylib
中可见。没有调用约定更改(例如Pascal调用约定)
简而言之:
int ReturnTheNunmberFive(void) { return 6; }