我的项目使用c ++层从其他平台访问.net com dll。首先我在.net 2.0版本中开发了com dll。一切正常。没有问题。我们使用regasm.exe注册了dll然后它工作正常,然后我想将我的项目升级到.net 4.0。我用vs 2010打开了这个项目,并且转换已经完成了。在构建时没有问题。但是我们在测试期间遇到了一个奇怪的错误。首先给出了没有注册的类,然后是sehexception(0x80004005)。我搜索了一切,但我找不到解。我该怎么办..非常感谢你的帮助。
用于注册.net 2.0的旧批处理文件
path C:\Windows\Microsoft.NET\Framework\v2.0.50727
RegAsm.exe AkosLibraryCs.dll /tlb:AkosLibraryCs.tlb /codebase
用于注册.net 4.0的批处理文件
path C:\Windows\Microsoft.NET\Framework\v4.0.30319
regasm.exe AkosLibraryCs.dll /tlb:AkosLibraryCs.tlb /codebase
获取此行的错误:
IAkosFunctionPtr akosFunc(__uuidof(AkosFunction));
c ++代码
#include "stdafx.h"
#include "tchar.h"
#import "AkosLibraryCs.tlb" raw_interfaces_only
using namespace AkosLibraryCs;
extern "C" __declspec(dllexport) _TCHAR* runFunction(_TCHAR* functionCode, _TCHAR* params)
{
void* resultAsVoid;
try
{
IAkosFunctionPtr akosFunc(__uuidof(AkosFunction)); ***//getting error this line!!!!!!!!***
void* functionCodeAsVoid=(void*)functionCode;
void* paramsAsVoid=(void*)params;
akosFunc->runFunction(functionCodeAsVoid,paramsAsVoid, &resultAsVoid);
}
catch(_com_error& ex )
{
LPCWSTR str = TEXT("Hata Oluştu");
MessageBox(0,ex.ErrorMessage(),str,0);
throw;
}
return static_cast<_TCHAR*>(resultAsVoid);
}