2011-07-03 117 views
1

我Ç项目在Microsoft Visual Studio 2010.I编译过程中得到了一些链接错误我收到以下错误:Makefile文件在Microsoft Visual Studio 2010

error LNK2019: unresolved external symbol _CreateRelation referenced in function _main 

CreateRelation是在一个功能我项目。以下是我的问题:

  1. 我认为这是一些依赖关系问题。我将如何在IDE中设置这些依赖关系规则?

  2. 请你告诉我,那是永远不可能建立一个项目,并设置链接规则,多少较大,不使用生成文件?

[编辑]

  relation.h 

      void createRelation(LIST); 

      mainfile.c 
      #include relation.h 
      #include xyz.h 
      . 
      . 
      . 


      int main(){ 
      LIST Relation1; 
      some codes // 
      createRelation(Relation1); 
      some code // 

        } 

creatRelation()realation.h.

EDIT定义的函数2

  In the function containing main 
+0

显示一些代码。如何声明CreateRelation()?它是在报头包括在由含有主'()'模块?在问题C,C++,或两者的语言?是包含CreateRelation的'定义模块()在相同或不同的项目'? –

+0

** CreateRelation()**在头文件中声明,并且该头文件包含在包含main函数的文件中。这是一个c项目。并且定义函数的文件位于同一个项目中。 – thetna

回答

2

有几种方式来设置的依赖关系的构建处理。

如果你引用的代码是在一个分项目,你可以简单地告诉VS构建依赖性。您可以通过右键单击该项目并选择项目依赖关系来完成此操作。然后,您可以检查在构建该项目之前应该构建的所有项目。

VS2010的另一个漂亮的功能是属性表。在较旧的VS版本中,你必须告诉编译器每个项目的包含路径和lib路径。现在您可以为您正在使用的每个库创建属性表,然后将其添加到项目中。这样你只需创建一次属性表,并可以在很多项目中使用它。

因此,如果代码是在另一个项目中,是不是一个子项目,你必须设置的lib路径,包括路径通过这些属性表。您可以通过点击查看 - >其他Windows的>物业经理

如果不引用任何外部项目显示您的项目中使用的属性表。这个问题很可能是由于您没有实现您声明的功能而导致的。所以编译器知道函数原型,并且不会抱怨,但链接器找不到该符号的实现。

我希望帮助

- 编辑 -

既然你说,实现在同一个文件中的主要功能我会怀疑的声明和定义函数的签名做不匹配。你是否收到关于隐式函数声明的警告?

那是一个复制粘贴错误? CreateRealtion(x);与CreateRelation(x);

+0

是的,我收到了一些警告,但不是你在这里陈述的。我不确定你是否理解我的意思。在我的项目中,它的文件数量非常大。声明的函数在** relation.h **中,它在** realtion.c **中定义。头文件** relation.h **包含在包含main函数的源文件中。 – thetna

+0

对不起,是复制粘贴错误。:)。两者都是一样的。 – thetna

+0

我假设你的意思是relation.c 这个文件在VS-Project的源代码文件夹中吗?它是否显示在源文件下的项目浏览器中? – Compuholic