2012-09-14 5 views
1

이 항목에 대해 높게 낮게 검색 중이므로 알아낼 수 없습니다.어떻게 C DLL을 사용하여 C# 프로젝트에서 파일을 읽을 수 있습니까?

그래서 저는 Visual Studio에서 C# 프로젝트를 사용하여 웹 응용 프로그램을 만들고 있습니다. 내 솔루션에는 또 다른 프로젝트가있다. 이것은 dll로 컴파일되는 c 프로젝트이다. 나는 두 사람 사이에 정보를 전달할 수있는 지점에 도달했으며 올바르게 작동합니다.

내 응용 프로그램에서 사용자는 파일을 업로드하고 "포함"폴더의 파일 시스템에 저장됩니다. dll (SDK에서 가져온 C 코드에서 컴파일 됨)은 해당 파일을 읽고 해독해야합니다. dll 프로젝트는 exe 파일로 컴파일하고 파일 경로를 보낼 때 잘 작동합니다.

내 질문은, 어떻게하면 디렉터리를 건너 뛰고이 파일을 가져올 DLL (지금 bin 폴더에 있음)을 얻을 수 있습니까? C 코드로 파일 경로를 하드 코딩하려고 시도했지만 작동하지 않습니다.

FILE *fp; 
bool isWorking = false 
if(fp = fopen("../Include/testFile.fit", "r")) 
    isWorking = true 

나는 또한 그냥 튀어를 찾아서 작성하고 모든 파일을 저장하지 않은 참조하지만 C 코드로 해당 디렉토리를 사용하는 희망의 DLL에서 텍스트 파일에 쓰기 시도했습니다 그럴 경우.

+0

응용 프로그램 폴더를 파일 저장소로 사용하지 않는 것이 좋습니다. 필자는 항상 두 파일을 분리하는 것이 좋습니다. 또는 상대 파일 경로를 사용하는 대신 파일이 단일 고정 폴더에 있는지 확인하십시오 (전체 경로는 구성 파일에 하드 코드되거나 설정 될 수 있음). – Flater

답변

0

파일 시스템에서 DLL 파일의 위치는 중요하지 않습니다. 중요한 부분은 결과 바이너리가 실행되고 현재 작업 디렉토리로 간주되는 부분입니다.

C# 프로그램에서 DLL을 사용하는 경우 DLL의 코드가 C# 프로그램과 동일한 현재 작업 디렉터리로 실행됩니다 (DLL의 코드에서 변경하지 않는 한).

그래서 C# 프로그램에서로드하는 것처럼 경로와 마찬가지로 파일을로드해야합니다.

+0

그건 원래 생각했지만 파일을 열지 못하기 때문에 디버깅하는 좋은 방법을 생각할 수 없습니다. – Ian

+0

@Ian 현재 작업 디렉토리가 DLL의 코드에 있는지 검사하여 디버그합니다. 빠른 디버그'printf'는 http://msdn2.microsoft.com/en-us/library/sf98bd4y(VS.80).aspx – HonkyTonk

+0

을 사용하여 알아야 할 모든 것을 알려줍니다. dll에서 printf를 어떻게 실행할 수 있습니까? C 프로그램에서 콘솔을 가져올 수 없습니다. – Ian

관련 문제