Нужна помощь с использованием внешнего объекта .NET в ANSI C! - PullRequest
0 голосов
/ 07 марта 2011

Я работаю над проектом с открытым исходным кодом, который написан на низкоуровневом 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, чем я, и может помочь мне перенести вышеупомянутый код, я был бы чрезвычайно благодарен за вашhelp!

Спасибо!

РЕДАКТИРОВАТЬ: Я ценю концептуальный совет, но мне действительно нужен пример кода C, чтобы показать мне, как на самом деле это сделать!Пожалуйста, ребята, кто-то должен быть в состоянии помочь мне с этим!Мне не нужно много, просто небольшой пример, показывающий мне, как это сделать в контексте того, что я пытаюсь сделать, и я могу справиться с этим оттуда.

1 Ответ

0 голосов
/ 07 марта 2011

Может быть проще обернуть объект как непрозрачный дескриптор, а затем обернуть методы, которые вы хотите использовать в C, как функции COM, которые принимают непрозрачный дескриптор.Для получения дополнительной информации эта статья MSDN может быть хорошим местом для начала.

...