c# 使用dllimport调用dll的问题

够懒 2011-04-22 09:56:25
各位好

我现在遇到个问题,还请各位帮忙

我有个dll,其中有全局变量,有个改变这个变量的函数
我在c#中将dll的这个函数封装成了类
这个类的多个实例同时调用这个方法的时候,发现全局变量并不是相互独立的.
如果想独立,只能将dll文件改名,然后依次调用,相当于多个dll...
所以想请教下,有什么什么好的方法可以使这个全局变量在各个对象之间独立?




namespace test_CS
{
public class test
{
[DllImport("mydll.dll", EntryPoint = "?get@@YAHXZ")]
public static extern int get();

public void show()
{
Console.WriteLine(get().ToString());
}

}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
test t1 = new test();
test t2 = new test();
t1.show();
t2.show();
}
}

}





#include "stdafx.h"

static int number = 0;
__declspec(dllexport) int get ()
{
number++;
return number;
}
...全文
116 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
够懒 2011-04-22
  • 打赏
  • 举报
回复
结贴!

看来是没别的办法了...
只能重新写dll
Just4life 2011-04-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 gxingmin 的回复:]
全局静态变量,肯定是公用的
只能如你说的,把dll改成多个dll才行

或者你该C++的dll代码,不搞全局静态变量,通过传参的办法
[/Quote]

right
yan_terry 2011-04-22
  • 打赏
  • 举报
回复
帮顶,学习。静态的全局变量,在创建对象前就建立了,独立不起来吧。
gxingmin 2011-04-22
  • 打赏
  • 举报
回复
全局静态变量,肯定是公用的
只能如你说的,把dll改成多个dll才行

或者你该C++的dll代码,不搞全局静态变量,通过传参的办法

111,097

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧