2011-07-27 2 views
1

Mac OS X 10.6에서 간단한 DLL을 컴파일하려고하는데 DLL이 세계에서 사용할 수 있도록 제공하는 함수를 선언하는 적절한 방법에 대해 혼란스러워합니다. . 신뢰할 수있는 소스의 샘플 코드 다음에 올랐습니다.Mac OSX에서 DLL 함수를 내보내는 올바른 방법

__declspsec(dllexport) pascal int ReturnTheNumberFive(void) 

하지만 gcc barfs가 있습니다. 샘플 코드가 실제로 가지고있는 것은 MACPASCAL과 DLLExport이며, 매크로라고 가정했습니다. #defines에 대한 샘플 코드, SDK 등을 살펴보고 발견 한 내용을 연결했습니다. 이 정의는 #ifs 안에 묻힐 수 있었으므로 내가 발견 한 것은 좋지도 사실이 아닙니다. 비정상적으로, 컴파일러는 또한 barfs를 사용하여 DLLExport와 MACPASCAL을 사용하면 아무런 해결책이 없습니다.

DLL 기능을 앱에서 사용할 수있게하는 올바른 방법은 무엇입니까?

+2

하는 'DLL'는 DLL 호출되지 않습니다; 파일 자체는'.dylib '라고 불리우며 종종 .framework에 내장됩니다. 용어에 대한 단순한 용어가 아닙니다 ... 커뮤니티에서 사용되는 일반적인 단어가 없으면 Google에서 정보를 찾기가 더 어려워집니다. 이제부터는 'dylib'와 'framework'이라는 단어를 사용하십시오. – Yuji

+0

Mac 프로그래밍 세계에서 갑자기 자신을 발견 한 사람들은 실제로 모든 것을 설명하는 신규 이민자를위한 안내서입니다. 지금은 귀하의 의견과 같은 부분입니다. – DarenW

답변

5

기본적으로 모든 기호는 .dylib에 표시됩니다. (예 : 파스칼 호출 규칙 등)에는 호출 규칙 변경 한마디로,

그래서이 없습니다 :

맥에

int ReturnTheNunmberFive(void) { return 6; }

+0

DLLExport와 MACPASCAL은 분명히 다른 플랫폼으로 이식 할 수 있습니다. 애플의 땅에있는 외국인으로서, 아무 것도 설명 할 수 없다는 것은 어디에도 설명되어 있지 않습니다. 글쎄, 이제 알았어! – DarenW

관련 문제