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[])23main (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