Snowdust 2016年08月24日
关于DLL不同实例属性的问题
各位大侠,小的我正在用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时不会影响到其它实例?
...全文
282 点赞 收藏 5
写回复
5 条回复

还没有回复,快来抢沙发~

发动态
发帖子
进程/线程/DLL
创建于2007-09-28

6373

社区成员

4.9w+

社区内容

VC/MFC 进程/线程/DLL
社区公告
暂无公告