Working with c++ dll and wpf
Working with c++ dll and wpf
我有带有头文件的c ++ dll。
#ifndef NETRRSWIN_H
#define NETRRSWIN_H
enum ErrorType
{
COMM_OK ,
BAD_BAUD_RATE ,
PORT_ALREADY_OPEN ,
PORT_NOT_OPEN ,
OPEN_ERROR ,
WRITE_ERROR ,
READ_ERROR ,
CLOSE_ERROR ,
RWPARAMS_ERROR
};
extern __declspec( dllexport ) char GetRxBuffer( unsigned char *TargetAddr, unsigned char *NumOfBytes );
extern __declspec( dllexport ) unsigned char GetByte(void);
extern __declspec( dllexport ) int RxBufferBytesAvailable(void);
extern __declspec( dllexport ) void DiscardRxBytes( unsigned char MaxBytes );
extern __declspec( dllexport ) char LoadTxBuffer( unsigned char *SourceAddr, unsigned char NumOfBytes );
extern __declspec( dllexport ) char SetSysCommPort( char *COMname );
extern __declspec( dllexport ) char SetSysBaudRate( unsigned int BaudRate );
extern __declspec( dllexport ) char CloseSysCommPort(void);
extern __declspec( dllexport ) char ResetSysCommPort(void);
#endif
我将其导入到我的项目中(始终使用复制选项)。
此外,我已将这些方法从dll导入为:
[DllImport("NetrRsWin.dll")]
public static extern char GetRxBuffer(char TargetAddr, char NumOfBytes);
[DllImport("NetrRsWin.dll")]
public static extern char GetByte(string rva);
[DllImport("NetrRsWin.dll")]
public static extern int RxBufferBytesAvailable();
[DllImport("NetrRsWin.dll")]
public static extern void DiscardRxBytes(char MaxBytes);
[DllImport("NetrRsWin.dll")]
public static extern char LoadTxBuffer(char SourceAddr, char NumOfBytes);
[DllImport("NetrRsWin.dll")]
public static extern char SetSysCommPort(char COMname);
[DllImport("NetrRsWin.dll")]
public static extern char SetSysBaudRate(int BaudRate);
[DllImport("NetrRsWin.dll")]
public static extern char CloseSysCommPort();
[DllImport("NetrRsWin.dll")]
public static extern char ResetSysCommPort();
问题是,当我尝试使用SetSysCommPort打开端口时,出现此错误:
错误消息:在 NetrRsWin.dll 文件中找不到过程入口点
在 WPF 中使用 c++ dll 的最佳方法是什么?我也尝试加载 dll 作为参考,但它说它不是有效的 com 参考。
谢谢
C++中的Char*
和C#中的char
不是同一类型。因此,SetSysCommPort签名不正确。它应该是:
[DllImport("NetrRsWin.dll")]
public static extern char SetSysCommPort([MarshalAs(UnmanagedType.LPStr)]String COMname);
您还应该检查其他方法的签名。
相关文章:
- C++核心准则 C35 对于接口类"A base class destructor should be either public and virtual, or protected and nonv
- 为什么C++逐位AND运算符在不同大小的操作数中表现为这样
- 为什么 Clang 不允许"and"作为函数名称?
- 位阵列上的快速AND运算
- 是否可以在 C++03 中定义'move-and-swap idiom'等效项
- BoostPython and CMake
- OpenSSL BIO and SSL_read
- Gurobi GRBModel and GRBmodel in C++
- std::visit and std::variant usage
- SHBrowseForFolder with BIF_BROWSEFORCOMPUTER and SHGetPathFr
- Directx12 and keystrokes
- different between int **arr =new int [ n]; and int a[i][j]?
- C++ getenv and setenv
- Inference pytorch C++ with alexnet and cv::imread image
- Visual Studio 2019 C++ and std::filesystem
- 保证逻辑 AND 表达式中的函数调用
- python ctypes and C++ pointers
- C++ const char with .begin() and .end()
- Working with c++ dll and wpf
- WPF and DirectX 11 via D3DImage