私はこのhttp://www.codeproject.com/Articles/10020/Using-managed-code-in-an-unmanaged-applicationC++/CLIプログラムを.libにコンパイルし、純粋なアンマネージC++プログラムとリンクするには?
の例では、3つのバイナリで構成され、次のよ:
- C#コード
- C++/CLIのコード
- C++コード
C++コードは上の呼び出し、 C++コードを呼び出してC++からC#コードを実行する方法を実現するC++/CLIコード。
問題は、C++/CLIは.lllにコンパイルしようとしたときに.dllとしてコンパイルされているため、C++コードと一緒にC++/CLIコードとリンクすると失敗します。
最終結果は2つのバイナリのみで構成されます。
- C#コード
- C++ --LINK-- C++/CLIのコード
あなたはもはやDLLを持っていないので、あなたが使用してはならないエラー
Error 1 error LNK2019: unresolved external symbol "__declspec(dllimport) public: static void __cdecl IMessageBoxWrapper::Destroy(class IMessageBoxWrapper *)" ([email protected]@@[email protected]@Z) referenced in function _main C:\Users\Zero\Desktop\UmanagedApp\UmanagedApp\main.obj UmanagedApp
Error 2 error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class IMessageBoxWrapper * __cdecl IMessageBoxWrapper::CreateInstance(void)" ([email protected]@@[email protected]) referenced in function _main C:\Users\Zero\Desktop\UmanagedApp\UmanagedApp\main.obj UmanagedApp
C++コードからcliライブラリにリンクするときに、相対パス名の代わりに絶対パスを使用してみてください。 –
返信いただきありがとうございます。 VS2010が.libを読み込んでいることを確認しました。 ManagedWrapper.libの名前をManagedWrapper1.libに変更したとき、ManagedWrapper.libを読むことができないと言われました。 – user25101622