我在eclipse中有2个C项目,每个项目都做一个特定的工作。(在一个项目中我有dataCatcherXML.c
,在另一个项目中我有main.c
)
第一个从特定的xml代码中获取某些变量的值,另一个变量必须具有在XMLdataCatcher中获取的值。
每个人都在他们的特定项目中工作,但如果我在一个项目中合并两个文件(dataCatcherXML.c和main.c),它就不起作用。(我不知道为什么)
所以我决定在不同的项目中使用这些文件。
我的问题是如何在不同项目中共同使用这些功能?有可能吗?
dataCatcherXML.C(正如您在这里看到的,我正在考虑位错误的值,位错误是XML文件中的标记)
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <xmlmemory.h>
#include <parser.h>
#include <xmlstring.h>
#include "crc.h"
void XMLdataCatcher(int argc, char **argv) {
xmlDocPtr doc;
xmlNodePtr root;
xmlNodePtr node;
xmlNodePtr children;
xmlNodePtr children2;
doc = xmlParseFile("/home/practicante/XML/prueba1.xml");
if (!doc) {
printf("Error al cargar documento XML\n");
}
root = xmlDocGetRootElement(doc);
node = root->xmlChildrenNode;
while (node != NULL ) {
children = node->xmlChildrenNode;
while (children != NULL ) {
**//In this part I am taking the value of bit_error from the XML file**
if (!(xmlStrcmp(node->name, "bit_error"))) {
printf("%s: %s\n", node->name, xmlNodeGetContent(node));
printf("%s\n", bit_error);
strcpy(bit_error, xmlNodeGetContent(node));
printf("%s\n", bit_error);
}
children2 = children->xmlChildrenNode;
while (children2 != NULL ) {
printf("%s: %s\n", children->name, xmlNodeGetContent(children));
children2 = children2->next;
}
children = children->next;
}
node = node->next;
}
printf("bit_error2 = %d", 1);
}
main.c:
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <xmlmemory.h>
#include "crc.h"
#include <parser.h>
#include <xmlstring.h>
#define BIT_SINCRONIA 0X47
#define PID_PAT 0X00
#define table_pat 0x00
FILE *fp2;
int main() {
unsigned short bit_error = 0; // **This part should be: unsigned short bit error = (the value taken in dataCatcherXML)**
bit_error = bit_error << 15;
unsigned short init_payload = 1;
init_payload = init_payload << 14;
unsigned short transport_priority = 0;
transport_priority = transport_priority << 13;
unsigned short PID = PID_PAT;
PID = transport_priority ^ PID;
PID = bit_error ^ PID;
PID = PID ^ init_payload;
unsigned short PID1 = PID >> 8;
unsigned short PID2 = PID;
......... the rest of the code is irrelevant
}
提前致谢。
答案 0 :(得分:0)
很难对这个问题给出一个明智的答案,但我会尝试一些变种。
简单的一个:只需将文件从一个项目复制(或链接)到另一个项目。如果发生任何变化,您需要记住在两个项目之间进行同步。
以Eclipse方式做到这一点:好吧,这个具有讽刺意味,但是如果你真的想这样做,就像Eclipse希望你这样做那么你可以试试这个。创建一个单独的项目。该项目仅包含此dataCatcherXML.c。这个项目应该编译成一个静态的(因为它比共享容易)库,比方说:datacarcherxml.a。在需要此库的其他项目中,您需要在datacatcherxml.a上设置依赖项并从其他项目添加库。如果您这样做,datacatcherxml将在需要时重建。嗯,这是一个小小的baroquesque,但你对IDE最初为Java设计的期望是什么? (好吧,这是一个小小的拖钓,很抱歉)。老实说,对于Java项目来说它会这样,我不确定CDT插件。我只将Eclipse用于Java。我是老同学,我更喜欢用于C / C ++开发的配置良好的vim。