要从C#调用C API,我会使用P/Invoke。但是如果我做了相反的事情,从C调用.NET API,我将如何去做呢?调用C#(.NET)API C
2
A
回答
2
如果你真的想要通过C API来完成,并最终运行COM和C++,你可以执行以下操作。但首先要弄清楚它是否真的有必要!我怀疑在大多数情况下它不会。
第1步。创建您想调用的C#.Net程序集。
第2步。创建一个导出extern“C”函数的混合模式CLI/C++程序集。让这个程序集调用C $程序集。
步骤3.创建一个从在步骤2中
需要考虑的事项作出的DLL调用导出的空调风格功能的C应用程序。 答:是否有一个实际的NEED需要C(与C++/COM)应用程序直接调用.Net程序集?
换句话说,如果你真的必须有一个混合的(.Net和non.Net)应用程序/系统,为什么不使用C++和COM来导出.Net方法呢?
B.你写的API会不会是类的包装?如果是这样,你将如何管理他们的生活? (例如,您是否创建/使用句柄?您将如何管理它们与实际gc对象的关系等)
C.字符串。这些在C和.Net之间处理非常不同。确保你熟悉他们的差异以及如何正确地发送字符串跨越这些边界......提示:CString是你的朋友。
0
您可以将c#代码转换为COM或使用C++ \ CLI。
1
有一种解决方案可以避免使用COM或C++ \ CLI。看到这里:Calling A .NET Managed Method from Native Code
0
这是一个解决方案。它实现[DLLEXPORT]属性 https://sites.google.com/site/robertgiesecke/Home/uploads/unmanagedexports
所以可以做这样的事情来调用非托管代码托管代码:
C#代码
class Test
{
[DllExport("add", CallingConvention = CallingConvention.StdCall)]
public static int Add(int left, int right)
{
return left + right;
}
}
C代码
int main()
{
int z = add(5,10);
printf("The solution is found!!! Z is %i",z);
return 0;
}
相关问题
- 1. 从.NET客户端调用Web API(C#)
- 2. 在C#.NET中调用Ruby或Python API
- 3. C#.NET调用C++ DLL
- 4. C#.NET CallFire SOAP API
- 5. C#opc-client .net api
- 6. 37signals Highrise .NET(c#)API
- 7. C++ DllMain API调用
- 8. 从C++调用(C#).NET Core方法
- 9. 从.NET调用C++方法
- 10. 从R调用.NET/C#
- 11. 如何使用C#.net从命令行调用C++ EXE .net
- 12. 用tidesdk调用C api
- 13. .NET的调用API
- 14. 在C/C++中调用MATLAB API
- 15. 使用.NET框架在C#中调用Web API 3.5
- 16. 调用C/C++代码从C#.NET应用程序
- 17. C#.Net Office 365 API入门
- 18. C#.NET API多save.changes()事务
- 19. 32Feet API与C#.NET - 卡住
- 20. api in c#.net示例
- 21. 通过API订阅.net C#
- 22. Google Freebase Api C#.Net示例
- 23. Twitter的API和C#.NET
- 24. Docusign C#API调用Connect
- 25. 从Groovy调用C API
- 26. 在asp.net c调用Flipkart Api#
- 27. 在c调用api函数#
- 28. 从C API调用str.format_map
- 29. Asp.net C#调用RESTful的API
- 30. 从C调用Entrust API#