:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
09/01/08 19:10
Proj A가 라이브 러리 인가요?
라이브러러라면 Proj B 에서 Proj A의 결과 라이브러리를 Link 해주어야 합니다.
09/01/08 19:21
chcomilk님// Proj A,B는 프로젝트 이름입니다. 하나의 통합환경에서 두 개의 프로젝트를 만들고 하나의 외부변수를 양쪽 프로젝트에서 다 접근할 수 있게 할 생각입니다. 일반적인 LINK에러는 라이브러리를 포함시켜주면 되는데요. 이건 외부변수 선언쪽에서 링크에러가 나버립니다. 제 생각에는 Proj A에서 외부변수를 정의한 정보를 가진 파일을 Proj B가 빌드시에 인식을 해야할 것 같은데 그 방법을 잘 모르겠네요...
09/01/08 19:58
일단, Proj가 dll 인가요? 아니면 정적 라이브러리인가요?
dll 이라면 __dllexport, __dllimport를 이용해서 한쪽에서 선언하고 한쪽에서는 extern 참조를 해야 하고, 정적 라이브러리라면 한쪽에서는 그냥 선언하고, 다른 한쪽에서는 extern 선언을 해서 참조하면 됩니다.
09/01/08 20:32
AhnGoon님// 일단 외부변수를 사용만하는 쪽은 C로 작성된 DLL이고 외부변수가 정의된 곳은 FORTRAN코드입니다.
FORTRAN쪽에서 common 블록을 사용해서 외부로 값이 나가게 한 상태인데... extern int idata; extern "C" __declspec(dllexport) void compute() idata=343; return; 위의 간단한 코드가 컴파일이 안됩니다. 오류 1 error LNK2001: "int idata" (?idata@@3HA) 외부 기호를 확인할 수 없습니다. ModuleProgDLL.obj ModuleProgDLL 이런 에러가 나오는데요... 단지 여기서는 extern으로 선언만 해두는 것인데 왜 링크에러가 나는지를 모르겠습니다...ㅠ.ㅠ
|