2012-01-10 3 views
-1

처음으로 해보고 경험이 없으므로 자극적 일 수 있습니다.VC++에서의 DLL 작성 (Visual Studio 2008)

목표 : 숫자의 계승을 찾는 것

. . 1 단계 : 유형 VC++ MFC와 템플릿 MFC DLL

2 단계에서 새 프로젝트를 만들기 : 다음 (MFC 공유) 내가 네 말 정규 DLL을 만들 오는

3 단계 : 나는 헤더 파일을 생성 (ServerHeader. 다음 코드를 사용하여 시간)

_declspec (dllimport) int factorial(int no); 

은 4 단계 : I 코드

#include "stdafx.h" 
_declspec (dllexport) int factorial(int no) 
{ 


return no == 0 ? 1 : no * factorial(no-1); 
} 

5 단계와 CPP 파일 (ServerFactorial.cpp)를 만들 : 내가 프로젝트를 빌드 모든 것이 괜찮

6 단계 : 나는 빈 프로젝트 등의 응용 프로그램 설정과 Win32 콘솔 응용 프로그램 VC++에서 Win32의 템플릿에서 다른 프로젝트 클라이언트를 생성하고 코드

#include "ServerHeader.h" 

#include <iostream.h> 

void main() 
{ 


int no,i; 


cout<<"Enter number"; 


cin>>no; 


i=factorial(n); // calling the method 


cout<<endl<<i; // printing ans 

} 
와 새로운 CPP 파일 (MainClass.cpp)를 만들

STEP 7 : 나는 ServerHeader.h, SERVER.DLL, Server.lib 복사 내가 클라이언트

8 단계로 서버에서 4 복사 (가, 하나는 개체 2 개 라이브러리 파일이고 다른 하나는 수출입니다 있습니다) : 오른쪽 클라이언트 프로젝트를 클릭하여 링커의 일반 설정을 지정하고 클라이언트 프로젝트 폴더에 복사 한 내 lib 파일의 경로를 작성하십시오

STEP 9 : 난 내 프로젝트를 빌드 내가 얻을

오류 1 치명적인 오류 C1083 : 'iostream.h': 해당 파일이나 디렉토리 F : 클라이언트 \ 클라이언트 \의 mainclass.cpp 2 \ 열 수 없습니다 파일을 포함 고객

죄송합니다.

+0

콘솔 응용 프로그램에서 호출 할 MFC DLL을 만드는 이유는 무엇입니까? 또한 컴파일하려는 코드를 표시하십시오. include 문은 다음과 같습니다 :'#include '? –

+0

아니요 # 을 #include하지만 #include ""을 사용하고 #include "iostream.h"및 #include "iostream"하지만 동일한 오류가 발생합니다. –

+0

안녕하세요, Cody Gray, 다시 시도해 볼 때 # 을 포함하여 iostream.h를 찾을 수 없다고 말합니다. #include를 사용하면 #"cout"과 "cin"을 인식 할 수 없습니다. –

답변

2

#include <iostream>이어야하며 std::cout 네임 스페이스를 포함하거나 코드에 using namespace std 문을 포함해야합니다.

+0

감사 잭슨, 이제 COUT와 CIN 오류가 더 이상 없습니다 그리고 난 #INCLUDE 를 사용하고 있지만, 지금은 다음과 같은 오류가 오류를 오류 LNK2019 무엇입니까 : 확인되지 않은 외부 기호 기능 ___tmainCRTStartup에서 참조 _main \t MSVCRTD.lib \t 클라이언트 오류 치명적인 오류 LNK1120 : 1 개 확인되지 않은 외부 \t F : \ 클라이언트 \ 클라이언트 \ ClientMain.exe 클라이언트 –

+0

이것은 일반적으로는 콘솔 응용 프로그램을 작성하지만, Windows 응용 프로그램을 구축 VS 말했다했음을 나타냅니다. LNK1120까지의 오류 텍스트를 Google에 알려 주면 많은 설명과 해결책을 찾을 수 있습니다. – Jackson

+0

귀하의 도움을 주셔서 감사합니다 잭슨, 주요 문제는 콘솔 콘솔 응용 프로그램과 Windows 응용 프로그램에 대한 VS 얘기했다. 진짜 어리 석음 !!!!!! 어쨌든 저는 C++에 2 권의 책을 가지고 있습니다. #include 을 사용했을 것입니다. 왜냐하면 그들은 Turbo C++ 컴파일러를 고려해야하고 아마도 이번에는 C++을 VS에서 사용하고 있었기 때문입니다. 그래서 그들은 둘 다 몇 가지 문법적으로 다르고 오류가 발생합니다. 나는 2 개의 질문이있다 (1) VS에 Turbo C++ 컴파일러를 통합하여 이전 구문을 사용할 수 있습니까? (2) 또는 Microsoft 컴파일러와 VS as IDE. 감사합니다 –

1

공유 라이브러리 (dll)를 사용하려는 경우 계승을 직접 호출 할 수 없습니다. LoadLibrary를 사용하여 dll을로드하고 GetProcAddress에 대한 호출에서 결과 핸들과 함수 이름을 사용하고 반환 된 함수 포인터를 호출해야합니다. 함수를 이름으로로드하려면 extern "C"지정자로 dll에 선언해야합니다. 따라서 장식없이 이름이 내보내집니다. 대안은 .def 파일을 dll 프로젝트에 추가하고 GetProcAddress를 서수와 함께 사용하는 것입니다. 이 일반적인 지시가 도움이되기를 바랍니다.