C ++ с использованием C # DLL.Проблема с InvokeHelper - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть c # dll, очень просто:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ClassTestPourCPP
{
    [System.Runtime.InteropServices.ClassInterface(System.Runtime.InteropServices.ClassInterfaceType.AutoDual)]
    public class MainClass
    {
        public int GiveInt2()
        {
            return 2;
        }
    }
}

И я хочу, чтобы мое приложение C ++ (VC6) использовало его. Поэтому я собрал свой dll с включенной опцией «set visible to com». Я regasm DLL, поэтому у меня есть файл TLB. Затем я импортировал tlb в IDE, он сгенерировал файл .h & .cpp, точно так же, как и должен.

long _MainClass::GiveInt2()
{
    long result;
    InvokeHelper(0x60020004, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
    return result;
}

Проблема теперь в том, что когда я вызываю метод, он просто ... ничего не делает, выдавая неверный вывод (он дает значение результата перед вызовом, например, если внутри InvokeHelper есть ловушка try)

Почему это не работает? (

Большое спасибо!

1 Ответ

1 голос
/ 17 февраля 2011

Вы звонили CoInitialize перед тем, как пытаться использовать объект COM?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...