我有一个C#Dll注册为COM Interop:
[Guid("B41C2229-DBBD-4614-AE28-BFAE82B10F20")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface ITestCls
{
[DispId(1)]
string test(string input);
}
[Guid("5E88B6B8-AE17-40A0-917A-51DEBD818145")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("TestNm.TestCls")]
public class TestCls : ITestCls
{
public string test(string input)
{
Console.WriteLine("INSIDE CS :: ");
return "CS :: ARE YOU TESTING WITH THIS INPUT " + input;
}
}
我试图用我的C ++代码调用它:
CoInitialize(NULL);
std::cout << data << '\n';
_bstr_t bstrt(data);
BSTR lResult;
CComQIPtr<IWPrint> iWrapClass;
HRESULT hresult;
hresult = iWrapClass.CoCreateInstance(L"TestNm.TestCls");
printf("0x%08lx", hresult);
if (SUCCEEDED (hresult))
{
iWrapClass->test(bstrt,&lResult);
wprintf(L"Response %s\n", lResult);
}
CoUninitialize();
return lResult;
当我从其他机器上运行同样的东西时,我的开发者机器上的一切正常工作HRESULT给我这个:
0x800401f3
我错过了一些注册吗?
由于
答案 0 :(得分:1)
排除故障时要尝试的一些事项:
RegAsm.exe /codebase
在目标计算机上注册它(需要强大的程序集名称)。答案 1 :(得分:0)
是的看起来像(regasm)它或烫发看到walkthru