动态库互相调用问题

csc008008 2016-11-26 09:43:29
我有个EXE应用程序,EXE调用动态库A, A又调用动态库B。
问题是: 动态库B中某些函数想要调用动态库A中的函数

请问怎么实现。
...全文
236 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Saleayas 2016-11-27
  • 打赏
  • 举报
回复
在 编写 B 的时候,你不能假定这个 B 是由 A 呼叫的。 她可能是由 C 呼叫的。 所以,你不能这样去理解。 你应该要求,当 B 加载的时候,或者调用某个函数的时候,需要提供一个回调机制。 举个例子: 比如你的 B 的一个函数用来计算一个很复杂的数值,但是需要很长的时间。 此时 B 的这个函数,除了正常的输入参数外,还需要一个回调接口, 这个回调接口就是,当 B 计算完成时,呼叫的一个方法。 至于这个回调到底是什么,是 A 的,还是 C 的,B不知道,也不需要知道。
flying_music 2016-11-27
  • 打赏
  • 举报
回复
引用 2 楼 csc008008 的回复:
@cyfcsd 感觉不知道哪里不对 都是有源码的,但是A 动态加载B的 但是B想用A里面的FUN 这个怎么做呢
跟动态不动态没关系,只要是源码可改就可以用下面的方法就行,如果不行那可能是其他问题

//main.cpp
#include <iostream>
#include "a.h"

using namespace std;

int main()
{
	fa1();
	system("pause");
	return 0;
}

//a.h
#ifndef _A_H
#define _A_H

void fa1();
void fa2();

#endif

//a.cpp
#include "b.h"
#include <iostream>

using namespace std;

void fa1()
{
	cout<<"fa1()"<<endl;
	fb();
}
void fa2()
{
	cout<<"fa2()"<<endl;
}

//b.h
#ifndef _B_H
#define _B_H

void fb();

#endif

//b.cpp
#include <iostream>

using namespace std;

void fb()
{
	cout<<"fb()"<<endl;
	fa2();
}
csc008008 2016-11-27
  • 打赏
  • 举报
回复
@cyfcsd 感觉不知道哪里不对 都是有源码的,但是A 动态加载B的 但是B想用A里面的FUN 这个怎么做呢
赵4老师 2016-11-27
  • 打赏
  • 举报
回复
A中声明回调函数供B调用。
flying_music 2016-11-26
  • 打赏
  • 举报
回复
动态库是你自己生成的吗?要是自己生成的应该不会有问题啊,直接调用就可以了啊,你是哪儿出的问题啊

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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