レーザーを制御するプログラムを作成していますが、それを行うには、dll を c# にインポートして関数を呼び出す必要があります。元のプログラムは C++ で書かれており、その方法がわかりません。だから私の質問は:
- C#でdllをインポートする方法
- C#でC++から関数を呼び出す方法
もう少しわかりやすくするために、C++ プログラムのコードを追加しました。
#include "MarkEzdDll.h"
class CDemoEzdDlg : public CDialog
{
// Construction
public:
CDemoEzdDlg(CWnd* pParent = NULL); // standard constructor
HINSTANCE m_hEzdDLL;//DLLµ÷Óþä±ú
LMC1_INITIAL lmc1_Initial;
LMC1_CLOSE lmc1_Close;
LMC1_LOADEZDFILE lmc1_LoadEzdFile;
LMC1_MARK lmc1_Mark;
LMC1_MARKENTITY lmc1_MarkEntity;
LMC1_GETPREVBITMAP lmc1_GetPrevBitmap;
LMC1_READPORT lmc1_ReadPort;
LMC1_WRITEPORT lmc1_WritePort;
LMC1_SETDEVCFG lmc1_SetDevCfg;
LMC1_SETHATCHPARAM lmc1_SetHatchParam;
LMC1_SETFONTPARAM lmc1_SetFontParam;
LMC1_GETPENPARAM lmc1_GetPenParam;
LMC1_SETPENPARAM lmc1_SetPenParam;
LMC1_CLEARENTLIB lmc1_ClearEntLib;
LMC1_ADDTEXTTOLIB lmc1_AddTextToLib;
LMC1_ADDFILETOLIB lmc1_AddFileToLib;
LMC1_ADDBARCODETOLIB lmc1_AddBarCodeToLib;
LMC1_CHANGETEXTBYNAME lmc1_ChangeTextByName;
LMC1_AXISMOVETO lmc1_AxisMoveTo;
LMC1_AXISCORRECTORIGIN lmc1_AxisCorrectOrigin;
LMC1_GETAXISCOOR lmc1_GetAxisCoor;
LMC1_SAVEENTLIBTOFILE lmc1_SaveEntLibToFile;
ダイアログには、このコードが添付されたボタンがあります。
void CDemoEzdDlg::OnButtonRun()
{
// TODO: Add your control notification handler code here
UpdateData();
if(lmc1_Mark==NULL)
{
return;
}
lmc1_Mark(FALSE);
UpdatePrevBmp();
AfxMessageBox(_T("Mark file finish!"));
}
これは、レーザーを開始する必要があるときです。
これをC#で取得するには?