我有一组结构定义,C#托管组件和非托管C / C ++组件都使用它们。现在,相同的结构定义分别存在于C / C ++和C#代码中 - 导致重复和相关的混乱。维护可以从C#和C / C ++使用的单个定义的最佳方法是什么? 谢谢! 阿米特
P.S。:我是一个C / C ++人,所以如果有一个明显的方法可以做到这一点,我可能会完全错过它!
答案 0 :(得分:3)
显然,我对您的项目并不熟悉,但是您是否考虑过在C++/CLI为您的图书馆构建托管网桥?使用“It Just Works”破解C ++ / CLI编译器为您所做的很多次,您将能够使用本机代码来回编组和共享托管类型。
同样,我不知道它是否适合你,没有更多具体细节,但它可能值得研究。
答案 1 :(得分:1)
您需要IDL(界面定义语言)尝试使用Google搜索:
这完全取决于你想要什么。所有上述技术都有IDL元素,并带有自己的行李。 我个人会保持低级C / C ++:D。所以我会谷歌“Imatix GSL”并使用上述技术来模拟XML中的问题并生成数据结构在任何编程语言中 - 这项技术非常简单和微妙,需要经验丰富的程序员,所以如果它没有意义,你应该坚持使用IDL。
- 编辑:编程技巧 -
如果您愿意,可以通过纯技术解决问题。当严谨的工程破裂时,就会出现混乱。如果您决定使用防火墙并将问题封装到纯C / C ++代码中,则不必担心依赖代码中的接口下降 - 这是因为任何有用的语言都可以与ABI接口你的平台(简单的C函数:P)。关键不是暴露内部,而是暴露类型的接口,例如表示可以对类型执行的对象和函数的数字句柄。
答案 2 :(得分:1)
我曾经想在我的一个C#代码和C代码之间难以分离的项目中这样做。理想情况下,C#代码可以从C代码中借用头文件,但是: