我需要在运行时编译和链接一些代码。我正在使用此处建议的方法:https://stackoverflow.com/a/10565120/3038460
基本上我是将我的代码写入一个 .cpp 文件,然后使用
进行编译/usr/bin/g++ -shared mysource.cpp -o libname.so
一切正常,而我只使用标准库中的 #include
header 。但是,如果我需要在“动态”代码中使用自定义类怎么办?如何包含我自己的标题? .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
}
解决这个问题的最佳方案是什么?
最佳答案
将该头文件的内容生成到生成的源文件中。
从技术上讲,#include
指令只是一个指令,用于在编译时将头文件的全部内容包含在源文件的主体中(具体来说,在您包含它的位置) .因此,您可以跳过中间人并在编译之前将该头文件的内容生成到您的源文件中,而不是 #include
关于c++ - 在运行时编译和 C++ 中的#include 自定义 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29616217/