前提・実現したいこと
10年前のPro*CのソースをVS2017にマイグレーションしています。
プロジェクトのプロパティで Common Language Runtime Support(/clr) を指定してビルドした
DLLに含まれるcppの関数をCから呼び出そうとしています。
このcppの関数は、内部で.NETFramework4.0のメソッドを呼び出しています。
cのmain()からcppの関数を呼び出すと、cppの関数が呼び出される前に、
KernelBase.dllの中で、exception が発生します。
exceptionが発生しないようにするための方法を教えてください。
.NETFramework4.0の初期化をしていないから、exceptionが発生しているのではと思っています。
発生している問題・エラーメッセージ
Unhandled exception at 0x7728AA12 (KernelBase.dll) in aaa.exe:
該当のソースコード
c
1int main() 2{ 3 char *ptr1, *ptr2; 4 abc(ptr1, ptr2); 5}
cpp
1#using <mscorlib.dll> 2#using <zzz-3.0.1.dll> 3 4using namespace System; 5using namespace System::Threading; 6using xxx_yyy_if::SendMessage ; 7 8void _stdcall abc(char *ptr1, char *ptr2) 9{ 10 SendMessage::messageOut(m_knd,m_id,name1,param2) ; 11}
試したこと
cppのソースから.NETFramework4.0の記述を削除したところ、
exceptionは、発生しなくなり、abc()関数が呼び出されました。
補足情報(FW/ツールのバージョンなど)
Visual Studio 2017
Windows Server 2016(英語版)
Oracle 18

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。