CYCLUS
Loading...
Searching...
No Matches
windows_helper_functions.h
Go to the documentation of this file.
1// This is the dynamic loading implementation for WINDOWS machines
2#ifndef CYCLUS_SRC_WINDOWS_HELPER_FUNCTIONS_H_
3#define CYCLUS_SRC_WINDOWS_HELPER_FUNCTIONS_H_
4
5#include <windows.h>
6
7#include "error.h"
8#include "platform.h"
9
10namespace cyclus {
11
12// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
13void DynamicModule::OpenLibrary() {
14 module_library_ = LoadLibrary(path_.c_str());
15
16 if (!module_library_) {
17 std::string err_msg = "Unable to load agent shared object file: ";
18 err_msg += ". Error code is: ";
19 err_msg += GetLastError();
20 throw IOError(err_msg);
21 }
22}
23
24// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
25void DynamicModule::SetConstructor() {
26 ctor_ = (AgentCtor*)GetProcAddress(module_library_, ctor_name_.c_str());
27
28 if (!ctor_) {
29 std::stringstream ss;
30 std::string agent = ctor_name_;
31 agent.erase(0, 9); // len(Construct) == 9
32 ss << "Could not find agent " << agent << " in module library "
33 << path_.c_str() << " (" << GetLastError() << ").";
34 throw IOError(ss.str());
35 }
36}
37
38// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
39void DynamicModule::CloseLibrary() {
40 if (module_library_) {
41 FreeLibrary(module_library_);
42 }
43}
44
45} // namespace cyclus
46
47#endif // CYCLUS_SRC_WINDOWS_HELPER_FUNCTIONS_H_
taken directly from OsiSolverInterface.cpp on 2/17/14 from https://projects.coin-or....
Definition agent.cc:14
Agent * AgentCtor(Context *)