C#プログラムで使用されるC++で作成されたDLLがあります。 C#プログラムはDLLを参照し、クラスを呼び出し、DLLで定義されている関数を使用できます。C#でのDLL関数の使用についての質問
今私はC#でC++コードを実行できるように、DLLに他の関数を追加したいと思います。私は、DLLの他の関数がどのように定義されているかの例に従っています。 .hと.cppと私はコードを実行する新しい関数を作成します。以前定義した関数と同じ場所に置いていましたが、C#コードにDLLを置くと関数が存在しません。 DLLクラスのインスタンスを作成するとき、私の関数はその一部ではありません。
クラスのパブリック関数として.hを入れ、.cppで実行するコードを与えましたが、そのコードは見つかりませんでした。
なぜ私のC#プログラムは、他の関数と同じスイートを使っていても、私が作った関数を見ることができないのですか?
UPDATE
code.h:
#pragma once
#include <windows.h>
#include <PvDisplayWnd.h>
#include <vfw.h>
#include "NPvResult.h"
#include "NPvDeviceInfo.h"
#include "NPvBuffer.h"
#include <string>
using namespace System;
using namespace System::Runtime::InteropServices;
public ref class NPvDisplayWnd
{
public :
NPvDisplayWnd();
bool Handle();
NPvResult^ ShowModeless(long locx, long locy, long x, long y);
NPvResult^ ShowModal();
NPvResult^ NPvDisplayWnd::Create();
int^ Display(NPvBuffer^ aBuffer, int^ x);
NPvResult^ Work(const std::string afilename, unsigned short asizex, unsigned short asizey, unsigned short aBPP, double aFPS);
NPvResult^ Close();
NPvResult^ DoEvents();
}
code.cpp:
#include "NPvDisplayWnd.h"
NPvDisplayWnd::NPvDisplayWnd(){code}
NPvResult^ NPvDisplayWnd::Create(){code}
bool NPvDisplayWnd::Handle()
NPvResult^ NPvDisplayWnd::ShowModeless(long locx, long locy, long x, long y){code}
NPvResult^ NPvDisplayWnd::ShowModal(){code}
int^ NPvDisplayWnd::Display(NPvBuffer^ aBuffer, int^ x){code}
NPvResult^ NPvDisplayWnd::DoEvents(){code}
NPvResult^ NPvDisplayWnd::Work(const std::string aFileName, unsigned short aSizeX, unsigned short aSizeY, unsigned short aBPP, double aFPS){code}
NPvResult^ NPvDisplayWnd::Close(){code}
私は仕事()関数を添加した関数。私はこれを構築し、私のC#のコードに配置する場合、それは仕事以外のすべての機能を見ています。私は正しい.dllを使用していたことを確認するために、私はShowModeless()の名前をShowModeless__F()に変更し、それを再構築してC#に追加し、変更を持ち越したが、私はまだWork()関数。
作業しているサンプルへのリンクがありますか? – MusiGenesis
これはC++のDLLではありません。これはC++/CLIです。これはC++とは別の言語です(ただし同様です)。 –