我正在开发一个用低级 ANSI C 编写的开源项目(我对此无法控制)。我正在尝试将 Microsoft Office Interop 功能集成到该项目的 Windows 版本中。具体来说,我想利用这些函数来生成 Excel 工作簿。
如果这是用 C# 或 C++ 编写的,这对我来说不会是问题,因为我已经这样做过很多次了。但我完全不知道如何在低级 C 中做到这一点!我需要从中获取此内容的 DLL 是 Microsoft.Office.Interop.Excel.dll。在 C# 中,它会是这样的:
using Microsoft.Office.Interop.Excel;
public static class Excel
{
private static Microsoft.Office.Interop.Excel.Application m_oExcelApp;
private static Microsoft.Office.Interop.Excel.Workbooks m_oBooks;
private static Microsoft.Office.Interop.Excel._Workbook m_oBook;
private static Microsoft.Office.Interop.Excel._Worksheet m_oSheet;
private static Microsoft.Office.Interop.Excel.Range excelRange;
public static void MakeBook()
{
m_oExcelApp = new Microsoft.Office.Interop.Excel.Application();
m_oExcelApp.Visible = false;
m_oSheet = null;
m_oBooks = null;
excelRange = null;
...等等。如果我能走到这一步,我真的很高兴!但据我所知,DllImport 只允许您导入函数;即,我无法弄清楚如何使用它来实例化该 DLL 中的对象(即创建 Microsoft.Office.Interop.Excel.Application() 的实例,这是进行任何操作所必需的)使用这些库)。
请理解,我完全意识到这是一项多么艰巨的任务,并且在低级 C 中执行此操作不是我的选择!但我坚持了下来,我的截止日期有点紧迫,如果你们中有人比我更精通低级 C,并且可以帮助我移植上面的代码,我将非常感激帮忙!
谢谢!
编辑:我很欣赏概念性建议,但我真正需要的是一些示例 C 代码来向我展示如何实际实现它!拜托,伙计们,必须有人能帮我解决这个问题!我不需要太多,只需要一个小例子,向我展示如何在我想做的事情的背景下做到这一点,并且我可以从那里处理它。
最佳答案
将对象包装为不透明句柄,然后将要在 C 中使用的方法包装为采用不透明句柄的 COM 函数可能会更容易。欲了解更多信息,this MSDN article可能是一个很好的起点。
关于c - 需要在 ANSI C 中实例化外部 .NET 对象的帮助!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215432/