C++ DLLからエクスポートされた関数を使用する必要があります。C++ DLLからC#コードを使用する方法
エクスポートされた関数内で発生する必要があるものがたくさんありますが、それを行うために書いたすべてのC#コードを書き直したくありません。
私はちょうどDLLにC#コードを貼り付けてやりたいと思います。
メモ:私はC#DLLを呼びたくないので、C#のコードをC++のDLLに入れたいと思います。ここで
はExports.defファイルです:ここで
LIBRARY InstallCheckWin32
EXPORTS
IsConnectionPointValid @1
fnTest @2
は、DLLのための私の.hファイルである:
// InstallCheckWin32.cpp : Defines the exported functions for the DLL application.
//
#include "stdafx.h"
#include "InstallCheckWin32.h"
#include <tchar.h>
INSTALLCHECKWIN32_API void CallCSharp()
{
// this is where I want to use C# objects
// eg:
DateTime now = DateTime.Now;
}
:ここ
// The following ifdef block is the standard way of creating macros which make exporting
// from a DLL simpler. All files within this DLL are compiled with the INSTALLCHECKWIN32_EXPORTS
// symbol defined on the command line. This symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see
// INSTALLCHECKWIN32_API functions as being imported from a DLL, whereas this DLL sees symbols
// defined with this macro as being exported.
#ifdef INSTALLCHECKWIN32_EXPORTS
#define INSTALLCHECKWIN32_API __declspec(dllexport)
#else
#define INSTALLCHECKWIN32_API __declspec(dllimport)
#endif
INSTALLCHECKWIN32_API void CallCSharp();
は、.cppファイルであります私は共通言語ランタイムサポート(/ clr)に一般設定プロパティ "共通言語ランタイムサポート"を設定しました
C++のDLLでC#コードを使用するには、ほかに何が必要ですか?
おかげ
基本的なC++ \ cliチュートリアルはまだ見たことがありますか?私は彼らも 'DateTime.Now'の例を持っているだろうと確信しています。 –
このDLLは、エクスポートされた関数を持つ標準のWin32 dllでなければなりません。私は何を求めているのでしょうか? – user3174075
C#はC++ではありませんが、文字通りC#コードをCppファイルに貼り付けてコンパイルできるようになるとは思いません。 C++コンパイラは、それをどのように処理するかを知りません。どのくらい複雑で、C#が何をするかによって、Scott Chamberlainに同意します.C++/CLIで変更することなくそれを書き直すことは可能でしょう。 – Kevin