我有一个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)能够使用它。所以我用启用了“set visible to com”选项构建了我的dll。 我诅咒DLL,所以我有tlb文件。 然后我在IDE中导入了tlb,它生成了一个.h& .cpp文件,完全像它应该的那样。
long _MainClass::GiveInt2()
{
long result;
InvokeHelper(0x60020004, DISPATCH_METHOD, VT_I4, (void*)&result, NULL);
return result;
}
现在问题是当我调用方法时,它只是..不是东西,给我一个错误的输出(它在调用之前给出了结果的值,就好像在InvokeHelper中有一个try catch)
为什么不工作? :(
非常感谢!
答案 0 :(得分:1)
在尝试使用COM对象之前,您是否曾致电CoInitialize
?