0

私のプロジェクトは、他のプラットフォームから .net com dll にアクセスするために C++ レイヤーを使用しています。最初に、.net 2.0 バージョンで com 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