dll中的全局变量的使用问题

missmuses 2017-08-29 09:35:14
0.dll中有已经初始化好的全局变量;
1.主程序调用了全局变量,对全局变量进行了计算和赋值;
2.然后全局变量进入dll中计算和赋值;
3.现在出现的问题是:主程序对全局变量的操作(计算和赋值)完全不影响dll中全局变量的值,在dll中全局变量还是原来的初始值???????[/size][/size][/b][/size][/size]
大神求救!大神求救!大神求救!
...全文
532 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
missmuses 2017-09-06
  • 打赏
  • 举报
回复
采用1楼楼主的答案已经实现了,4楼把变量作为参数传进传出的方法也可以,只是接口稍微有点麻烦
大米粥哥哥 2017-08-30
  • 打赏
  • 举报
回复
你是怎么调的
Really_want 2017-08-30
  • 打赏
  • 举报
回复

//main.cpp
extern int g;
void print_g();

int main()
{
	print_g();
	g++;
	print_g();
	return 0;
}

//dll.cpp
#include <iostream>
using namespace std;

int g = 0;

void print_g()
{
	cout << g << endl;
}

//makefile
target: a.exe dll.dll

dll.dll: dll.cpp
	g++ -g -Wall -std=c++11 -shared -o dll.dll dll.cpp

a.exe: main.cpp dll.dll
	g++ -g -Wall -std=c++11 -o a.exe main.cpp dll.dll

//cmd
a.exe > output.txt

//output.txt
0
1
www_adintr_com 2017-08-30
  • 打赏
  • 举报
回复
要初始化 dll 中的全局变量, 你需要把 dll 中的变量导出, 主程序中通过导出的名字或序号来获取变量的地址, 然后进行初始化. 不是定义一个名字相同的变量就可以的.
  • 打赏
  • 举报
回复
如果可以,为什么不吧变量作为参数穿进传出呢?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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