0

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

0 回答 0