Мне нужно скомпилировать и связать некоторый код во время выполнения. Я использую подход, предложенный здесь: https://stackoverflow.com/a/10565120/3038460
В основном я пишу свой код в файл .cpp, а затем компилирую с помощью
/usr/bin/g++ -shared mysource.cpp -o libname.so
Все работает нормально, пока я только #include
заголовки из стандартных библиотек. Но что, если мне нужно использовать пользовательский класс в «динамическом» коде? Как включить мой собственный заголовок? Файл .cpp временно хранится в том же месте, что и мой двоичный файл, и это может отличаться от местоположения моих исходных файлов. Есть ли способ узнать во время выполнения, где находился исходный код? Я сомневаюсь.
Более того, я хотел бы, чтобы мой код работал, даже если исходный код недоступен.
Чтобы уточнить, mysource.cpp может выглядеть так:
#include <stdlib.h>
#include <vector>
#include "myheader.h" <---- how can g++ find this file? At runtime,
when I create mysource.cpp, I have no idea
where myheader.h is located
void f(){
// Code
}
Какое лучшее решение для решения этой проблемы?
mysource.cpp
, взяв его из жестко закодированной строки или скопировав исходный файл с помощью скрипта, как предлагает @Z̷͙̗̻͖̣̹͉̫̬̪̖̤͆ͤ̓ͫͭ̀̐͜͞ͅͅͅαlγo - person Marco Ancona   schedule 14.04.2015