none
dll 파일 컴파일 실패 도와주세요 RRS feed

답변

  • 안녕하십니까? 김초영 님
    Microsoft MSDN의 Forum 사이트를 방문해 주셔서 감사합니다.
    문의 하신 "dll 파일 컴파일 실패 도와주세요" 문의에 대한 답변을 드리겠습니다.

    영문에서 보시는 것이 메뉴를 알기 쉽게 찾을 수 있을 것입니다.
    https://msdn.microsoft.com/en-us/library/ms235636(v=vs.120).aspx
    Walkthrough: Creating and Using a Dynamic Link Library (C++)

    디버깅 결과 창에 제대로 보여집니다.

    문서에서 namespace MathFuncs 선언부를 header 파일에 포함하는 부분의 설명이 빠져있습니다.
    저는 MathFuncsDll.h 파일에 namespace MathFuncs 선언부를 추가 하였습니다.

     
    #ifdef MATHFUNCSDLL_EXPORTS
    #define MATHFUNCSDLL_API __declspec(dllexport) 
    #else
    #define MATHFUNCSDLL_API __declspec(dllimport) 
    #endif
    
    #include "stdafx.h"
    
    using namespace std;
    
    namespace MathFuncs
    {
    	// This class is exported from the MathFuncsDll.dll
    	class MyMathFuncs
    	{
    	public:
    		// Returns a + b
    		static MATHFUNCSDLL_API double Add(double a, double b);
    
    		// Returns a - b
    		static MATHFUNCSDLL_API double Subtract(double a, double b);
    
    		// Returns a * b
    		static MATHFUNCSDLL_API double Multiply(double a, double b);
    
    		// Returns a / b
    		// Throws const std::invalid_argument& if b is 0
    		static MATHFUNCSDLL_API double Divide(double a, double b);
    	};
    }

        


    MyExecRefsDll이 Set as Startup Project로 설정되었는지 확인하시기 바랍니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    • 답변으로 표시됨 SMPark82 2015년 9월 2일 수요일 오전 1:00
    2015년 8월 25일 화요일 오전 5:07

모든 응답

  • dll 프로젝트가 아니라 콘솔 어플리케이션(exe) 프로젝트를 만들어 실행하신 것 같네요.

    (dll 프로젝트는 새 프로젝트 위자드에서 MFC dll 을 선택하시던가, Win32 Project 에서 dll을 선택하셔야 합니다.)

    그리고 std::invalid_argument 예외가 발생했으나, catch 문에서 예외를 처리했고,

    메인 함수가 return 0; 되면서 자연스럽게 종료된 것으로 보입니다.

    지금 하시고 싶으신게 구체적으로 어떤 것인지 다시 올려보시면 추가 답변을 드리겠습니다.

    2015년 8월 25일 화요일 오전 4:16
  • 안녕하십니까? 김초영 님
    Microsoft MSDN의 Forum 사이트를 방문해 주셔서 감사합니다.
    문의 하신 "dll 파일 컴파일 실패 도와주세요" 문의에 대한 답변을 드리겠습니다.

    영문에서 보시는 것이 메뉴를 알기 쉽게 찾을 수 있을 것입니다.
    https://msdn.microsoft.com/en-us/library/ms235636(v=vs.120).aspx
    Walkthrough: Creating and Using a Dynamic Link Library (C++)

    디버깅 결과 창에 제대로 보여집니다.

    문서에서 namespace MathFuncs 선언부를 header 파일에 포함하는 부분의 설명이 빠져있습니다.
    저는 MathFuncsDll.h 파일에 namespace MathFuncs 선언부를 추가 하였습니다.

     
    #ifdef MATHFUNCSDLL_EXPORTS
    #define MATHFUNCSDLL_API __declspec(dllexport) 
    #else
    #define MATHFUNCSDLL_API __declspec(dllimport) 
    #endif
    
    #include "stdafx.h"
    
    using namespace std;
    
    namespace MathFuncs
    {
    	// This class is exported from the MathFuncsDll.dll
    	class MyMathFuncs
    	{
    	public:
    		// Returns a + b
    		static MATHFUNCSDLL_API double Add(double a, double b);
    
    		// Returns a - b
    		static MATHFUNCSDLL_API double Subtract(double a, double b);
    
    		// Returns a * b
    		static MATHFUNCSDLL_API double Multiply(double a, double b);
    
    		// Returns a / b
    		// Throws const std::invalid_argument& if b is 0
    		static MATHFUNCSDLL_API double Divide(double a, double b);
    	};
    }

        


    MyExecRefsDll이 Set as Startup Project로 설정되었는지 확인하시기 바랍니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    답변이 문제 해결에 도움이 되었다면 답변으로 채택을 부탁드립니다.
    하지만 문제 해결이 되지 않아서 정확한 답변을 원하는 경우에는 문제의 정보를 더 자세하게 답변으로 제공해주시기 바랍니다.

    • 답변으로 표시됨 SMPark82 2015년 9월 2일 수요일 오전 1:00
    2015년 8월 25일 화요일 오전 5:07