dllexport 및 dllimport로 인라인 C 함수 정의Defining Inline C Functions with dllexport and dllimport

Microsoft 전용Microsoft Specific

dllexport 특성으로 함수를 인라인으로 정의할 수 있습니다.You can define as inline a function with the dllexport attribute. 이 경우 프로그램의 임의의 모듈이 함수를 참조하는지 여부와 상관없이 함수가 항상 인스턴스화되어 내보내집니다.In this case, the function is always instantiated and exported, whether or not any module in the program references the function. 함수는 다른 프로그램에서 가져올 수 있는 것으로 간주됩니다.The function is presumed to be imported by another program.

dllimport 특성으로 선언된 함수를 인라인으로 정의할 수도 있습니다.You can also define as inline a function declared with the dllimport attribute. 이 경우 함수를 확장할 수는 있지만(/Ob(인라인) 컴파일러 옵션 사양 적용) 절대 인스턴스화되지 않습니다.In this case, the function can be expanded (subject to the /Ob (inline) compiler option specification) but never instantiated. 특히 인라인으로 가져온 함수의 주소가 사용된 경우 DLL에 상주하는 함수의 주소가 반환됩니다.In particular, if the address of an inline imported function is taken, the address of the function residing in the DLL is returned. 이 동작은 인라인으로 가져온 함수가 아닌 함수의 주소를 사용할 때와 동일합니다.This behavior is the same as taking the address of a non-inline imported function.

인라인 함수의 정적 로컬 데이터 및 문자열은 단일 프로그램(즉, DLL 인터페이스가 없는 실행 파일)과 마찬가지로 DLL과 클라이언트 사이에 같은 ID를 유지합니다.Static local data and strings in inline functions maintain the same identities between the DLL and client as they would in a single program (that is, an executable file without a DLL interface).

가져온 인라인 함수를 제공할 때 특별히 주의해야 합니다.Exercise care when providing imported inline functions. 예를 들어 DLL을 업데이트하는 경우 클라이언트에서 DLL의 변경된 버전을 사용하는 것으로 단정하지 마십시오.For example, if you update the DLL, don't assume that the client will use the changed version of the DLL. 적합한 버전의 DLL을 로드하려면 DLL의 클라이언트를 다시 빌드하십시오.To ensure that you are loading the proper version of the DLL, rebuild the DLL's client as well.

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

DLL 가져오기 및 내보내기 함수DLL Import and Export Functions