DLL 사용시에 변수 사용 질문입니다..
정적 DLL를 사용하고 있고요..
DLL 안의 함수에서 선언된 변수를 메인 프로그램에서 사용시에....
변수 선언을 어떻게 해야 될지를....
메인에서 DLL의 함수를 CALL하는것은 정상입니다.
imp.h와 exp.h에 각각 변수를 함수선언하듯이 선언하였는데...
선언은 이렇게 했구요..
메인프로그램의 #include "import.h"의 내용
import.h 에는 extern "C" __declspec(dllimport) long cs_sqlcode;
DLL프로그램의 #include "export.h"의 내용
export.h 에는 extern "C" __declspec(dllexport) long cs_sqlcode;
이런 링크에러가 나옵니다..
[LinkerError] Unresolved external '_cs_sqlcode' referenced from C:LAIBSRCLAIB222218MAIN2218.OBJ.
즉, DLL를 CALL하는 메인프로그램에서 DLL안의 변수를 사용하는 방법 좀 부탁합니다.
참고로 C++Builder 로 작성된 겁니다..
> DLL 사용시에 변수 사용 질문입니다..
> 정적 DLL를 사용하고 있고요..
> DLL 안의 함수에서 선언된 변수를 메인 프로그램에서 사용시에....
> 변수 선언을 어떻게 해야 될지를....
> 메인에서 DLL의 함수를 CALL하는것은 정상입니다.
> imp.h와 exp.h에 각각 변수를 함수선언하듯이 선언하였는데...
>
> 선언은 이렇게 했구요..
> 메인프로그램의 #include "import.h"의 내용
> import.h 에는 extern "C" __declspec(dllimport) long cs_sqlcode;
> DLL프로그램의 #include "export.h"의 내용
> export.h 에는 extern "C" __declspec(dllexport) long cs_sqlcode;
>
> 이런 링크에러가 나옵니다..
>
> [LinkerError] Unresolved external '_cs_sqlcode' referenced from C:LAIBSRCLAIB222218MAIN2218.OBJ.
>
> 즉, DLL를 CALL하는 메인프로그램에서 DLL안의 변수를 사용하는 방법 좀 부탁합니다.
> 참고로 C++Builder 로 작성된 겁니다..
안녕하세요. 아래의 글이 도움이 될지도 모르겠습니다.
Global variables declared in a DLL are private to that DLL. A DLL cannot access variables declared by modules that call the DLL, and it is not possible for a DLL to export its variables for use by other modules. Such access must take place through a procedural interface.
Even though a DLL can be used by multiple applications at the same time, to the DLL it appears that there is only one client, and each instance of the DLL will have its own set of global variables. For multiple DLLs (or multiple instances of one DLL) to share memory, the DLLs must use memory mapped files. Refer to the Windows API documentation for further details on this topic.