У меня есть DLL, созданная на C ++, которая затем используется в программе на C #. программа на C # ссылается на DLL, а я вызываю классы и могу использовать функции, определенные в DLL.
Теперь я хочу добавить другие функции в DLL, чтобы я мог запускать код C ++ в C #. Я следую примеру того, как определяются другие функции в DLL; .h и .cpp, и я создаю новую функцию, которая выполняет код. Я помещаю его в те же места, что и ранее определенные функции, но когда я помещаю DLL в мой код C #, моей функции там нет. когда я создаю экземпляр класса 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}
Функция, которую я добавил, была функцией Work (). если я создаю это и помещаю это в мой код C #, он видит все функции, кроме работы. Чтобы убедиться, что я использую правильный .dll, я изменил имя ShowModeless () на ShowModeless__F () и перестроил его и добавил в мой C #, и изменение перенесено, но я все еще не видел свою функцию Work () .