У меня есть 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)
Почему это не работает? (
Большое спасибо!