You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
#include "polygon.h"
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <dlfcn.h>
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
using std::cout;
|
|
|
|
using std::cerr;
|
|
|
|
|
|
|
|
// load the triangle library
|
|
|
|
void* triangle = dlopen("./triangle.so", RTLD_LAZY);
|
|
|
|
|
|
|
|
if (!triangle)
|
|
|
|
{
|
|
|
|
cerr << "Cannot load library: " << dlerror() << '\n';
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// load the symbols
|
|
|
|
create_t* create_triangle = (create_t*) dlsym(triangle, "create");
|
|
|
|
destroy_t* destroy_triangle = (destroy_t*) dlsym(triangle, "destroy");
|
|
|
|
|
|
|
|
if (!create_triangle || !destroy_triangle)
|
|
|
|
{
|
|
|
|
cerr << "Cannot load symbols: " << dlerror() << '\n';
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
// create an instance of the class
|
|
|
|
polygon* poly = create_triangle();
|
|
|
|
|
|
|
|
// use the class
|
|
|
|
poly->set_side_length(7);
|
|
|
|
cout << "The area is: " << poly->area() << '\n';
|
|
|
|
|
|
|
|
// destroy the class
|
|
|
|
destroy_triangle(poly);
|
|
|
|
|
|
|
|
// unload the triangle library
|
|
|
|
dlclose(triangle);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|