关于DLL不同实例属性的问题
各位大侠,小的我正在用MFC写一个关于串口处理的DLL供C#调用,里面有一个属性m_COMPort保存串口信息。
在C#中有一个Helper类:
调用这个Helper的方法如下:
上面的代码是为了支持不同的串口,现在的问题是我执行_Helper1.SetCOMPort时_Helper2中的COMPort也同时变了。请问各位大侠DLL中应该怎样定义这个变量?这样在不同的实例SetCOMPort时不会影响到其它实例?
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时不会影响到其它实例?
...全文
相关推荐
C# 引用不同文件夹下的Dll文件
当我们的程序需要引用多个dll,太多的dll引起混乱时,我们是不是可以将dll分类在不同的目录呢?如何引用不同文件夹的Dll文件,将是我们的问题?
vcruntime140.dll 问题的解决方法
安装apache时提示“vcruntime140.dll”。只不过是因为vc++的运行库的问题。本软件中包括了64位系统的各种版本的vc++运行库,主要全部安装,问题就能得到解决
KERNELBASE.dll问题
重新下载一个win7版的KERNELBASE.dll
让.NET程序兼容不同版本的Dll文件
本文介绍了让.NET程序兼容不同版本的Dll文件的方法:把所有的新版DLL文件拷贝到运行目录下,希望主程序能够直接调用新版的库文件。只要在config里面加入runtime节点就可以完成主程序一调用。
解决计算机丢失MSVCR120.dll、MSVCP120.dll等问题
解决计算机丢失MSVCR120.dll、MSVCP120.dll等问题,程序运行时报错计算机丢失MSVCR120.dll、MSVCP120.dll,拷贝库到运行目录下或者System下也不行


进程/线程/DLL
