我是C#中的菜鸟,我已经在网上搜索过了。无论如何,我仍然不确定这一点,我没有完全控制我必须实现的代码,这就是为什么我想确定我不需要做任何dll。我有一个带有方法的C ++文件,我想从C#代码调用这个方法。我刚刚在函数中添加了“extern C”。
当我将.h和.cpp文件添加到C#项目时,它们未被检测到。当然,当我尝试添加它作为参考时,它不起作用。
所以我绝对不得不制作一个dll?
答案 0 :(得分:3)
您从C#访问C ++代码的选项:
所有这些选项必然涉及创建另一个模块/程序集。您无法将C ++代码直接链接到C#程序集。
答案 1 :(得分:0)
您可能希望尝试使用PInvoke Interop Assistant生成通过Platform Invoke与DLL交互所必需的C#。请注意,这是不完美的,但YMMV。
如果您有足够的知识和耐心,另一种方法是使用类型库导入器创建托管包装器,从本机C ++ DLL中创建COM组件并从C#中使用它。
答案 2 :(得分:0)
您将无法与.cpp / .h文件进行交互,因为您至少需要一个二进制对象(程序集)供C#进行交互,而C#不会从.cpp / .h生成任何二进制文件。这是关于添加这些文件作为项目参考的主题。
至于你无法控制代码的论点 - 好吧,不要用实际的.cpp / .h制作一个DLL,而是制作你自己的瘦DLL,它有一个只包含的包装器对象标题,调用您将调用的任何方法,并链接到相应的.o文件或.lib或任何您拥有的。如果界面发生了变化,你就会改变你的东西包装器,这应该很容易。