2016-09-09 13 views
1

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#コードを使用するには、ほかに何が必要ですか?

おかげ

+1

基本的なC++ \ cliチュートリアルはまだ見たことがありますか?私は彼らも 'DateTime.Now'の例を持っているだろうと確信しています。 –

+0

このDLLは、エクスポートされた関数を持つ標準のWin32 dllでなければなりません。私は何を求めているのでしょうか? – user3174075

+2

C#はC++ではありませんが、文字通りC#コードをCppファイルに貼り付けてコンパイルできるようになるとは思いません。 C++コンパイラは、それをどのように処理するかを知りません。どのくらい複雑で、C#が何をするかによって、Scott Chamberlainに同意します.C++/CLIで変更することなくそれを書き直すことは可能でしょう。 – Kevin

答えて

2

はありません、あなたは、同じソースファイルにC#とC/C++をミックスし、何とかそのためのコードを生成するコンパイラを期待することはできません。

一般に、複数のコーディング言語を同じファイルに混合することは、一部の言語ではサポートが限られています。 C/C++ではアセンブリを混在させることがあります(mov ax,cxでは.Netアセンブリではありません)。 JavaScriptで頻繁に混在できるサイト作成用の言語/フレームワーク(実際には同時に実行されません)...

修正:ほとんどの場合、言語には同等の機能/ライブラリがあります。言語の1つ。また、異なる言語で書かれたライブラリ間の相互運用も可能です - 言語の組み合わせによって異なります。場合によっては、ある言語のソースを別の言語にクロスコンパイルすることもできますが、一般的には同じ/類似のフレームワークを持つ言語に限定されています(C++/C#は一般的にそのようなバケットには入っていませんが、C# )

+0

私が行う必要のあることを行うC++/CLIプロジェクトを作成しました...洞察力に感謝します... – user3174075

関連する問題