1 // Copyright Contributors to the Open Shading Language project.
2 // SPDX-License-Identifier: BSD-3-Clause
3 // https://github.com/AcademySoftwareFoundation/OpenShadingLanguage
4 
5 #include <string>
6 #include <iostream>
7 #include <cstdlib>
8 
9 #ifdef __linux__
10 #include <dlfcn.h>
11 #endif
12 
13 #include <OpenImageIO/plugin.h>
14 #include <OpenImageIO/sysutil.h>
15 using namespace OIIO;
16 
17 
18 typedef int (*EntryPoint)(int argc, const char *argv[]);
19 
20 
21 
22 int
main(int argc,const char * argv[])23 main (int argc, const char *argv[])
24 {
25 #ifdef OIIO_HAS_STACKTRACE
26     // Helpful for debugging to make sure that any crashes dump a stack
27     // trace.
28     OIIO::Sysutil::setup_crash_stacktrace("stdout");
29 #endif
30 
31     std::string pluginname = std::string("libtestshade.")
32                              + Plugin::plugin_extension();
33     Plugin::Handle handle = Plugin::open (pluginname,
34                                           false /* NOT RTLD_GLOBAL! */);
35     if (! handle) {
36         std::cerr << "Could not open " << pluginname << "\n";
37         exit (1);
38     }
39 
40     EntryPoint entry = (EntryPoint) Plugin::getsym (handle, "test_shade");
41     if (! entry) {
42         std::cerr << "Cound not find test_shade symbol\n";
43         exit (1);
44     }
45 
46     int r = entry (argc, argv);
47 
48     Plugin::close (handle);
49     return r;
50 }
51 
52