|
|
1
1
为所有dll提供一个函数setGlobalDataPointer(singleton*)。您的exe在调用任何其他dll函数之前调用此函数。在dll代码中,替换singleton的所有出现。通过singletonptr-> |
|
|
2
0
你可以:
第二种情况很少见,但可以仅从def文件生成导入库。使用lib/def生成导入库。见 Working with Import Libraries and Export Files . |
|
|
3
0
不幸的是,听起来你有很多现有的代码需要修改。在这种情况下,我只想用(2),假设它不会变得太大和笨拙。 根据您的描述,听起来像是在加载dll时只需要发送一次exe级别的数据。 如果(2)太混乱,我会对它进行一些重构,以便有一个带有serialize/unserialize()函数的基本“dllpage”类。永远不要导出类本身,只导出其中所需的单个函数(随着类的变化,这会非常有帮助……类级导出会出现非常奇怪的中断)。您需要构造函数/析构函数,可能还需要每个公共成员。 可能存在一些堆管理问题,因此我还希望重载new/delete,并让所有类使用位于helper dll中的集中式new/delete。 |
|
|
4
0
在你开始破坏exe之前,你应该先阅读一下内存管理和dll。 这里有一篇文章讨论CRT对象问题,但同样的事情也适用于你自己的C++对象。 |
|
|
5
0
第一个选项:将exe保存的所有数据放入共享内存。DLL可以愉快地访问它,只要你有适当的锁定到位。 第二个选项:使用导出的函数指针将内存传输到DLL,EXE有一个函数,DLL调用EXE中的另一个函数,该函数将这个函数返回为指针,DLL可以调用该函数。导出函数可以将数据作为正常结构传递到堆栈上。 第三个选项:如果您使用同一个运行时,只需导出一个指针,该指针允许您直接访问内存。 |
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |