关于DLL不同实例属性的问题

Snowdust Snowdust 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
各位大侠,小的我正在用MFC写一个关于串口处理的DLL供C#调用,里面有一个属性m_COMPort保存串口信息。

CDLLTestApp theApp;

int n_COMPort = 0;

// CDLLTestApp initialization

BOOL CDLLTestApp::InitInstance()
{
CWinApp::InitInstance();

return TRUE;
}


extern "C" _declspec(dllexport) void SetCOMPort(int nCOMPort)
{
n_COMPort = nCOMPort;
}

extern "C" _declspec(dllexport) int GetCOMPort()
{
GetSelfModuleHandle();
return n_COMPort;
}


在C#中有一个Helper类:


namespace AppMain
{
public class DLLTestHelper
{
[DllImport("DllTest.dll", EntryPoint = "SetCOMPort")]
public static extern void _SetCOMPort(int nCOMPort);

[DllImport("DllTest.dll", EntryPoint = "GetCOMPort")]
public static extern int _GetCOMPort();

public void SetCOMPort(int nCOMPort)
{
_SetCOMPort(nCOMPort);
}

public int GetCOMPort()
{
return _GetCOMPort();
}
}
}


调用这个Helper的方法如下:

DLLTestHelper _Helper1 = new DLLTestHelper();
_Helper1.SetCOMPort(1);
DLLTestHelper _Helper2 = new DLLTestHelper();
_Helper1.SetCOMPort(2);

int n1 = _Helper1.GetCOMPort();

int n2 = _Helper2.GetCOMPort();


上面的代码是为了支持不同的串口,现在的问题是我执行_Helper1.SetCOMPort时_Helper2中的COMPort也同时变了。请问各位大侠DLL中应该怎样定义这个变量?这样在不同的实例SetCOMPort时不会影响到其它实例?
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
Snowdust
进程/线程/DLL 15,466 成员 49,169 内容