我应该如何设计多个c ++ / clr项目之间的交互?

时间:2016-01-04 00:15:34

标签: dll c++-cli static-libraries clr

我有一些不同的项目可以混合并匹配到不同类型的解决方案中。

对于项目,我目前有

  • EngineProj:c ++,构建为.lib
  • GameProj:c ++,构建为.exe
  • EditorProj:c ++ / clr,构建为.exe

对于解决方案,我目前有

  • 游戏:c ++,使用EngineProj和GameProj构建
  • 编辑:c ++ / clr,使用EngineProj和EditorProj构建

这对游戏很有用。我已经能够制作一些不同的游戏解决方案,不断重用共享的EngineProj。

Editor解决方案让EditorProj使用名为EditorForm的WindowsForm对象构建.exe。这用于编辑所有游戏解决方案通用的通用游戏数据。

但是,现在,我希望能够为我的编辑做同样的事情。我希望能够制作游戏特定版本的编辑器,尽可能多地重用项目设置和代码。这是我正在努力的方向。

对于项目,我正在计划

  • EngineProj:c ++,构建为.lib
  • GameCoreProj:c ++,构建为.lib
  • GameExeProj:c ++,构建为.exe(一个非常薄的小项目)
  • EditorCoreProj:c ++ / clr,构建为.lib
  • EditorGameExeProj:c ++ / clr,构建为.exe

对于解决方案,我正在计划

  • 游戏:c ++,使用EngineProj,GameCoreProj和GameExeProj构建
  • GameEditor:c ++ / clr,使用EngineProj,GameCoreProj,EditorCoreProj和EditorGameExeProj构建

我遇到麻烦让我的GameEditor解决方案聚集在一起。

想法是让EditorCoreProj提供与EditorProj相同的EditorForm;仅在.lib中。然后使用GameCoreProj.lib和EditorCorProj.lib构建EditorGameExeProj。 EditorGameExeProj将支持源自EditorForm的新WindowsForm对象,但实现了GameCorProj需求独有的新功能。

现在,各种形式的未解决的外部因素一直困扰着我。

似乎我的问题源于EditorCoreProj是一个c ++ / clr项目。

我阅读了很多文章并尝试了许多不同的方法,但最终我发现一些阅读建议制作.lib永远不会有效。听起来不支持c ++ / clr .libs。

那么,我尝试将EditorCoreProj构建为.dll。几个小时,我试图让EditorGameExeProj导入.dll。我读过,也许我需要为导出和导入标记所有内容。这听起来像是很多工作,所以我开始制作一些测试解决方案。然而,这也导致了未解决的外部因素。

我很擅长制作.dll;我一直更喜欢.libs。也许我只是遇到.dll的新问题。在这一点上,我花了几天时间试图进行这种设置。

最后,我的问题。

我是朝着正确的方向前进的吗?也许我应该做的更容易吗?

感谢您的时间

1 个答案:

答案 0 :(得分:0)

我最终坚持这个计划,让一切都运转起来。我不知道是否有更好的路线,但这完全满足了我的所有需求。