从gcc中的另一个程序执行C程序
我需要在我的项目中包含一个.h文件,该文件将在运行时提供。由于.h文件是在链接时链接的,因此我无法包含.h文件。所以我决定写一个虚拟程序来创建.h文件,然后调用我的实际程序。无论如何都有办法做到这一点。或者任何其他解决方案都是可能的。我基本上需要在我的程序开始执行之前创建一个.h文件,并且需要将它链接到我的程序。从gcc中的另一个程序执行C程序,c,C,我需要在我的项目中包含一个.h文件,该文件将在运行时提供。由于.h文件是在链接时链接的,因此我无法包含.h文件。所以我决定写一个虚拟程序来创建.h文件,然后调用我的实际程序。无论如何都有办法做到这一点。或者任何其他解决方案都是可能的。我基本上需要在我的程序开始执行之前创建一个.h文件,并且需要将它链接到我的程序。 实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构。例如,如果该文件包含以下数据:- fno:int:4,fname:char:30,ftype:i
实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构。例如,如果该文件包含以下数据:- fno:int:4,fname:char:30,ftype:int:4 然后我应该创建一个结构,如
struct somename
{
int fno;
char-fname[30];
int-ftype
};代码>
然后我应该能够创建所创建结构的实例。这是我喜欢做的你能做的是:
- 创建.h文件
- 叉子
- 如果在child中:execve
- 如果在父亲:等待(或不等待,取决于你想做什么)
您可以做的是:
- 创建.h文件
- 叉子
- 如果在child中:execve
- 如果在父亲:等待(或不等待,取决于你想做什么)
我会使用
Makefile
;您的程序将在运行时接收头文件(可能是检查它?),然后execve()
通过make
命令传递文件名
然而,这听起来很麻烦;也许你正试图用错误的工具来实现某些目标。也许你想先使用一些脚本?还是写两个独立的程序。。?你想做什么?我会使用Makefile
;您的程序将在运行时接收头文件(可能是检查它?),然后execve()
通过make
命令传递文件名
然而,这听起来很麻烦;也许你正试图用错误的工具来实现某些目标。也许你想先使用一些脚本?还是写两个独立的程序。。?你想做什么?是一个解决方案。它允许在运行时加载动态库
- 将虚拟程序编译为动态库
- 在你的电脑上使用dlopen。所以
- 调用您需要的任何函数,就好像它已被gcc链接一样(请参阅dlsym)
是一种解决方案。它允许在运行时加载动态库
- 将虚拟程序编译为动态库
- 在你的电脑上使用dlopen。所以
- 调用您需要的任何函数,就好像它已被gcc链接一样(请参阅dlsym)
+1但是:不要这样做。解决真正的问题,而不是为了解决真正的问题而为自己创造的疯狂问题;-)我同意史蒂夫的观点
dlopen
基本上是针对插件的(顺便说一句,我还是不知道你是不是在这么做)+1但是:不要这样做。解决真正的问题,而不是为了解决真正的问题而为自己创造的疯狂问题;-)我同意史蒂夫的观点dlopen
基本上是针对插件的(顺便说一句,我还是不知道你是不是在这么做),就像史蒂夫说的-不要这样做。:-)正如史蒂夫所说,不要这样做。:-)实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构;然后我应该能够创建所创建结构的实例。这就是我喜欢的do@nikhil考虑使用Python并从内部执行C代码,如果你关心性能的话。您的方法相当困难,因为您基本上是在尝试编写一个解析器来检查语法和分配内存。。祝您好运,避免出现错误。实际上,我应该获取一个由用户创建的文件,解析该文件,然后使用该文件中的字段创建一个结构。例如,如果该文件包含以下数据:-fno:int:4,fname:char:30,ftype:int:4,那么我应该创建一个类似struct somename{int fno;char fname[30],int ftype}的结构; 然后我应该能够创建所创建结构的实例。这就是我喜欢的do@nikhil考虑使用Python并从内部执行C代码,如果你关心性能的话。您的方法相当困难,因为您基本上是在尝试编写一个解析器来检查语法和分配内存。。祝你好运,避免出现错误。