私のプロジェクトは、他のプラットフォームから .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);
}