Plugin_win.cpp
Go to the documentation of this file.
1 /*
2  * This file is part of ALVAR, A Library for Virtual and Augmented Reality.
3  *
4  * Copyright 2007-2012 VTT Technical Research Centre of Finland
5  *
6  * Contact: VTT Augmented Reality Team <alvar.info@vtt.fi>
7  * <http://www.vtt.fi/multimedia/alvar.html>
8  *
9  * ALVAR is free software; you can redistribute it and/or modify it under the
10  * terms of the GNU Lesser General Public License as published by the Free
11  * Software Foundation; either version 2.1 of the License, or (at your option)
12  * any later version.
13  *
14  * This library is distributed in the hope that it will be useful, but WITHOUT
15  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16  * FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
17  * for more details.
18  *
19  * You should have received a copy of the GNU Lesser General Public License
20  * along with ALVAR; if not, see
21  * <http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html>.
22  */
23 
24 #include "Plugin_private.h"
25 
26 #include "AlvarException.h"
27 
28 #include <windows.h>
29 #include <sstream>
30 
31 namespace alvar {
32 
33 class PluginPrivateData
34 {
35 public:
37  : mHandle(NULL)
38  {
39  }
40 
41  HINSTANCE mHandle;
42 };
43 
45  : d(new PluginPrivateData())
46 {
47 }
48 
50 {
51  delete d;
52 }
53 
54 void PluginPrivate::load(const std::string filename)
55 {
56  d->mHandle = LoadLibrary(filename.data());
57  if (!d->mHandle) {
58  std::stringstream message;
59  message << "could not load " << filename
60  << ", error code " << GetLastError();
61  throw AlvarException(message.str().data());
62  }
63 }
64 
66 {
67  FreeLibrary(d->mHandle);
68 }
69 
70 void *PluginPrivate::resolve(const char *symbol)
71 {
72  void *address = (void *)GetProcAddress(d->mHandle, symbol);
73  if (!address) {
74  std::stringstream message;
75  message << "could not resolve " << symbol;
76  throw AlvarException(message.str().data());
77  }
78  return address;
79 }
80 
81 } // namespace alvar
Main ALVAR namespace.
Definition: Alvar.h:174
void load(const std::string filename)
Definition: Plugin_unix.cpp:55
filename
void * resolve(const char *symbol)
Definition: Plugin_unix.cpp:71
ALVAR exception class.
Drawable d[32]
This file implements the ALVAR exception class.


ar_track_alvar
Author(s): Scott Niekum
autogenerated on Mon Jun 10 2019 12:47:04