c - 需要在 ANSI C 中实例化外部 .NET 对象的帮助!

标签 c .net object instantiation dllimport

我正在开发一个用低级 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/

相关文章:

java - 检查 future 的对象是否相等

C 数组可以在元素之间包含填充吗?

c - 找不到 MSVCR90.DLL

c - 这是空操作还是其他什么?

c# - 如何在 WPF 中将 CellTemplate 中的 TextBlock 居中?

java - 将表示数学表达式的树转换为没有多余括号的字符串

c - 如何让 FFTW 工作

c# - 在 C# 中使用反射确定参数是否使用 "params"?

javascript - 如何从数组中返回特定的键

javascript - 如何在javascript中将菜单转换为多维关联数组?