dllsampleexplicit.cpp

来自「BCAM 1394 Driver」· C++ 代码 · 共 82 行

CPP
82
字号
//-----------------------------------------------------------------------------
//  (c) 2002 by Basler Vision Technologies
//  Section:  Vision Components
//  Project:  BCAM
//  $Header: DllSampleExplicit.cpp, 2, 07.01.2003 16:58:22, Happe, A.$
//-----------------------------------------------------------------------------
/**
  \file     DllSampleExplicit.cpp
  \brief    Console application using the BcamApiSampleDll (explicit linkage)

  This console application demonstrates explicit linking against a dynamic library using the Bcam high level interface.
  Before unloading the dll, the clean up code provided by the BcamApi will be processed by calling the dll's 
  PrepareUnloadProc() function. 
  
  In general it is highly recommended to invoke the CBcam::CleanUp() method before unloading
  a dll using the Bcam API.

*/
#include "stdafx.h"
#include "BcamApiSampleDll.h"


#ifdef _DEBUG
#define LIBNAME "..\\..\\lib\\BcamApiSampleDlld.dll"
#else
#define LIBNAME "..\\..\\lib\\BcamApiSampleDll.dll"
#endif

int _tmain(int argc, _TCHAR* argv[])
{
  typedef void (*TestProc)();
  typedef BOOL (*PrepareUnloadProc)();

  HMODULE hInst;   // handle to the library

  // load the dll
  hInst = LoadLibrary(LIBNAME);

  if ( hInst != NULL )
  {
    // get pointer to the exported functions
    TestProc Test = ( TestProc) GetProcAddress(hInst, "Test");
    if ( Test == NULL )
    {
      fprintf(stderr, "Could not retrieve pointer to exported function Test()");
    }
    else
    {
      // call the Test() function
      Test();
    }

    PrepareUnloadProc PrepareUnload = (PrepareUnloadProc) GetProcAddress(hInst, "PrepareUnload");
    if ( PrepareUnload == NULL )
    {
      fprintf(stderr, "Could not retrieve pointer to exported function PrepareUnload()");
    }
    else
    {
      // Before unloading the dll do the clean up
      BOOL res = PrepareUnload();
      if ( ! res )
      {
        fprintf(stderr, "Call to PrepareUnloadProc() failed. GetLastError() = %d\n", GetLastError());
      }
    } 

    // Now unload the dll
    if ( ! FreeLibrary(hInst) )
    {
      fprintf(stderr, "Unloading dll failed. GetLastError() = %d\n", GetLastError());
    }
  }
  else
  {
    fprintf(stderr, "Cannot load library %s\n", LIBNAME);
  }

  return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?