none
윈도우7에서 VB프로그램의 일반DLL사용시 파일을 찾을 수 없다는 메세지 RRS feed

  • 질문

  • VB에서 사용이 가능하도록 VC++에서 일반DLL을 만들었습니다.

    XP에서 한폴더에 놓고 실행하면 잘 되던 프로그램이, 윈도우7에서는 오류를 일으킵니다.

    VB프로그램까지는 실행이 되고, 이후 DLL을 사용하는 이벤트가 생길때

    //-------------------------------------------------------------------------//\

    '48'런타임오류가 발생하였습니다.

     파일을 찾을 수 없습니다. xxx.dll

    //-------------------------------------------------------------------------//

    이라는 메세지가 뜹니다.

    혹시나해서 system32폴더로 dll을 옮겨놓고 실행해도 마찬가지 입니다.

     

     

    //---------------------------------------------------------------------------------------------//

    Private Declare Function 함수이름 Lib "DLL이름.dll" (ByVal Dest As String) As Long

    //---------------------------------------------------------------------------------------------//

     

    VB에서는 위와 같은 타입으로 선언되어있고 사용했고,

    //---------------------------------------------------------------------------------------------//

    extern "C"_declspec(dllexport) BSTR __stdcall connecting(BSTR bstr_data1, BSTR bstr_data2)

    //---------------------------------------------------------------------------------------------//

    dll은 위와같이 선언하고 제작했습니다.  

     

    VB에서 호출하는 부분이 문제인지, 아니면 일반DLL 제작시 또 다른 방식이 있어야 하는지... 궁금하네요..

    조언부탁합니다.

    2010년 11월 1일 월요일 오전 3:34

모든 응답

  • DLL을 로드하면서, 해당되는 DLL 이외에, 몇몇 시스템 DLL들을 올바르게 로드하지 못하는 경우가 있을 수도 있습니다. Dependency Walker 홈페이지(http://www.dependencywalker.com/)에 방문하셔서 프리웨어로 다운로드받을 수 있는 Depedency Walker 유틸리티를 내려받으시고, Windows 7 환경에서 해당 EXE 파일을 열어 필요하다고 언급된 DLL들이 제 위치에 모두 있는지 진단하시는 것이 필요할 듯 합니다.

    기본적으로 Visual Basic Runtime 6.0 버전의 구성 요소들은 Windows 시스템 DLL에 포함이 되어있지 않은 것도 일부 있는 것으로 알고 있습니다. 이러한 경우 문제가 될 가능성이 있으며, 또한 몇몇 시스템 DLL들의 경우 이전 버전의 Windows XP와는 다르게 배치 방식에 변동이 있어 이에 관한 호환성 문제가 있을 가능성도 있습니다.

    감사합니다. :-)


    남정현 (rkttu@rkttu.com) - Visual Studio 2010 한국 공식 팀 블로그 멤버 - http://www.vsts2010.net | Windows Azure Cafe SYSOP - http://cafe.naver.com/wazure | DEVPIA C# Forum SYSOP - http://www.devpia.com/CSharp.MAEUL
    2010년 11월 10일 수요일 오전 12:11