将.net 2.0升级到.net 4.0后,从c ++调用.net com dll时发生SEHexception

时间:2013-10-24 13:09:36

标签: c# c++ asp.net .net dll

我的项目使用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);
}

0 个答案:

没有答案