Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c++;项目之间的标题 在C++中编写应用程序时遇到麻烦。我有两个项目。项目A是普通C++项目,项目B是CLR项目的C++支持。项目A包含使用LLVM框架中的头的类。项目B包含项目A某些类的托管包装。我可以在项目B中使用项目A中的类而不包括它们的标题吗_C++_Clr_Llvm_Header Files - Fatal编程技术网

c++;项目之间的标题 在C++中编写应用程序时遇到麻烦。我有两个项目。项目A是普通C++项目,项目B是CLR项目的C++支持。项目A包含使用LLVM框架中的头的类。项目B包含项目A某些类的托管包装。我可以在项目B中使用项目A中的类而不包括它们的标题吗

c++;项目之间的标题 在C++中编写应用程序时遇到麻烦。我有两个项目。项目A是普通C++项目,项目B是CLR项目的C++支持。项目A包含使用LLVM框架中的头的类。项目B包含项目A某些类的托管包装。我可以在项目B中使用项目A中的类而不包括它们的标题吗,c++,clr,llvm,header-files,C++,Clr,Llvm,Header Files,原因是这样的。当我在项目B中包含来自项目A的类头时,我还需要指定来自项目A的这个头使用的框架库,但是LLVM框架不能与clr支持配合。我无法将框架包含从标头移动到cpp文件。如何解决这个问题?只要不在依赖于LLVM头的项目中使用模板,就可以。您始终可以转发声明在项目A头中使用的类型,并在cpp文件中包含实际头 假设您要使用一个名为llvm\u type的类型,它是由llvm编译器的库定义的类。在projectA.h中,您可以这样做: class llvm_type; class MyAPrjC

原因是这样的。当我在项目B中包含来自项目A的类头时,我还需要指定来自项目A的这个头使用的框架库,但是LLVM框架不能与clr支持配合。我无法将框架包含从标头移动到cpp文件。如何解决这个问题?

只要不在依赖于LLVM头的项目中使用模板,就可以。您始终可以转发声明在项目A头中使用的类型,并在cpp文件中包含实际头

假设您要使用一个名为
llvm\u type
的类型,它是由llvm编译器的库定义的类。在
projectA.h
中,您可以这样做:

class llvm_type;

class MyAPrjClass {
public:
    void myMethod (llvm_type x, int y);
}
然后在
projectA.cpp
中包括LLVM头:

#include <llvm_type.h>

void MyAPrjClass:: myMethod (llvm_type x, int y)
{
    // Define your method using the llvm_type here.
}
并在方法定义中使用它


您不能定义依赖于LLVM头的模板类或方法,因为您需要在相同的头中定义方法,这将涉及了解导入类型的实现

您必须使用头文件,否则您的源文件如何知道如何使用每个类?我认为解决这个问题的唯一方法是使用预处理器。只要不需要同时使用LLVM和clr,就可以使用前向声明。header只是声明存在于另一个源文件中的变量和函数,并将它们放在header所包含的类中,以便代码知道这些函数和变量的存在。当然,除非标题是大量的,并且您不想向前声明所有内容,或者创建另一个不包含不兼容标题的标题。我甚至在问问题之前就尝试过这个。尽管如此,我还是再试了一次,但现在它让我走上了正确的道路。LLVM似乎对include非常严格。我的一些include必须在头文件中(所有不适用于LLVM和自定义类的头文件),其中一些必须在cpp文件中(所有LLVM头文件和所有自定义类),并且我不能使用windows.h。由于某种原因,它与一个(是的,只有一个)核心LLVM文件冲突。谢谢你的建议,你真的帮我解决了这个问题。
#include <vector>
typedef std::vector<int> VectorInt;