C#学习教程:从C#对话C我希望能够从我的C#代码(在Windows上)调用此C代码中的一些方法。在这两种语言之间进行交互的最佳方式是什么?请注意,C中的方法不是无状态的。我们需要调用两个方法:initialization()=>这将初始化数据结构并将数据从文件加载到内存中。该方法将被调用一次。ComputeSomething(parameters)=>C#将多次调用此方法。注意:这两个方法实际上调用了其他几个方法,但这只是我们要暴露给C#的两个方法(代码很复杂,这也是我们不想移植到C#的原因)我已经可以导入了将c代码导入visualstudio并能够成功编译代码。我知道我们可以将C代码实现为Windows服务,但我正在寻找一种允许我们直接从C#调用C方法的解决方案。非常感谢任何指点!(COM互操作与我正在尝试做的事情相关吗?)听起来您可以使用P/Invoke。查看此站点以获取提示:http://www.pinvoke.net/另外,尝试在SO上搜索P/Invoke和Google以获取c#pinvoke调用c代码的建议我手头没有任何技术示例,但我写了一些.NET代码,通过P/InvokeWin32API。棘手的部分是在传递参数时使方法签名正确。这可能对你有帮助。最新版本的VisualStudio允许您编写可以调用不安全函数但仍与CLR托管代码交互的C++代码。他们称之为“隐式PInvoke”或“C++/CLR”。查看MSDN文章“使用C++Interop”了解更多信息。托管代码不能直接调用非托管代码,因此您需要包装函数来处理内存管理问题并在.NET对象和应用程序的数据结构之间进行转换。从上面的链接中,查看“如何:使用C#使用本机类”部分。这是一个解决方案。此解决方案允许通过使用[DllExport]属性(与P/InvokeDllImport相反)修饰函数来从C调用C#函数。https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexportsC#代码类测试{[DllExport("add",CallingConvention=CallingConvention.StdCall)]publicstaticintAdd(intleft,intright){返回左+右;C代码以上是C#学习教程:C#与C对话分享的全部内容,如果对你有用,需要进一步了解C#学习教程,希望大家多加关注—intmain(){intz=add(5,10);printf("解找到了!!!Z为%i",z);返回0;}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
