2014-11-04 52 views
1

我有两个项目,第一个是C++控制台应用程序,第二个是C++ CLR空项目。我想从控制台调用函数并在CLR项目中使用它。我尝试创建头文件,将其包含在CLR项目中并使用#include“headername.h”并调用函数render3d(),但它给了我那些链接错误。如何从CLR C++窗体窗体中的C++控制台项目调用函数?

错误29错误LNK2028:无法解析的标记(0A000934) “无效__cdecl render3d(无效)” 函数“私人引用(render3d @@ $$ FYAXXZ?): 无效__clrcall DEMO :: MainForm的:: AddAnimebutton_Click (类 System :: Object ^,class System :: EventArgs ^)“ (?AddAnimebutton_Click @ MainForm @ DEMO @@ $$ FA $ AAMXP $ AAVObject @ System @@ P $ AAVEventArgs @ 4 @@ Z)E:\毕业 项目\ CPP ARENA DEMO新设计\ DEMO \ DEMO \ MainForm.obj DEMO

错误30错误LNK2019:无法解析的外部符号 “无效__cdecl render3d(无效)”(render3d @@ $$ FYAXXZ?)引用在函数“private: void __clrcall DEMO :: MainForm :: AddAnimebutton_Click(class System :: Object ^,class System :: EventArgs ^)” (?AddAnimebutton_Click @ MainForm @ DEMO @@ $$ FA $ AAMXP $ AAVObject @系统@@ P $ @ AAVEventArgs 4 @@ Z)E:\毕业 项目\ CPP ARENA DEMO新设计\ DEMO \ DEMO \ MainForm.obj DEMO

错误31错误LNK1120:2周无法解析的外部E:\毕业 项目\ CPP ARENA DEMO新设计\ DEMO \发布\ DEMO.EXE DEMO

+0

我会做一个只有头文件的模块,但是你可能会发现创建一个传统的头文件+ impl模块更容易。然后你可以直接使用这些源文件,或者创建一个库。控制台项目中的 – 2014-11-04 18:19:54

+0

我有太多的源文件,所以每次我尝试在CLR项目中使用这些源文件时都会出现太多错误。那为什么我不能直接使用它。 – 2014-11-04 19:09:14

回答

0

你可能要创建一个包含你要调用,并添加在p之间的相关性的函数库rojects。 Visual Studio解决方案,然后将包含3个项目:

  • 库render3d功能
  • 控制台应用程序,它引用上述库
  • CLR空项目,参照上述库
+0

做的意思是我用render3d函数库作为其他两个项目之间的连接? – 2014-11-04 18:57:31

+0

我的意思是如果你想在控制台应用程序和你的CLR项目中使用它,你可能需要把函数放在另一个库中。完成此操作后,您应该能够从控制台项目和CLR项目添加引用到库(http://msdn.microsoft.com/en-us/library/wkze6zky%28v=vs.110%29的.aspx)。 – bialpio 2014-11-04 19:35:27

+0

我添加了从控制台到库的引用,从库到CLR,并将这些代码写入库。它再次给我这个链接错误。 (函数“public:static void __clrcall ClassLibrary :: Class1 :: callrender(void)”(?callrender)引用的无效令牌(0A000005)“void __cdecl render3d(void)”(?render3d @@ $$ FYAXXZ) @ Class1 @ ClassLibrary @@ $$ FSMXXZ) – 2014-11-04 20:14:48