如何卸载dll - 页 6

 
VBAG писал(а)>>

主函数原型的选择是否正确?

如何管理ATTACH/DETACH线程?

在哪里可以读到这方面的信息,最好是有例子的?

杰弗里-里希特 "专业人员的窗口"。

 
VBAG >> :

向大家问好!

这个话题变得很有趣,并决定在终端附带的一个简单的例子(DLLSample项目)上检查讨论的话题。

在VS 6.0中编译后,烘烤过的dll在终端上成功工作,但却不能自行卸载!为什么?


你怎么知道它不是在卸货?我的DLLSample工作正常。

 
HideYourRichess писал(а)>>

你怎么知道它不是在卸货?我的DLLSample工作正常。

间接地,在你关闭终端之前,dll文件的主体是不会被覆盖的。

.

我有几个静态数组是在全局层面上声明的,也许会影响到它。

.

我想了解如何正确地调整项目,并 "仔细 "地开出我所说的附加/分离。

 

谢谢你,我会注意的。

 
VBAG >> :

向大家问好!

这个话题变得很有趣,并决定在终端附带的一个简单的例子(DLLSample项目)上检查讨论的话题。

在VS 6.0中编译后,烘烤过的dll在终端上成功工作,但却不能自行卸载!为什么?

这里是主要功能。

现在问一下行家们,他们真正了解dll是如何在Windows下工作的,并且知道如何在VS 6.0(例如)下的项目中正确编译它。

主函数的原型是否正确?

如何管理ATTACH/DETACH流?

我在哪里可以读到这方面的信息,最好是有例子的?

什么是阿塔克?什么dtach?你在说什么? 普通dll中的DllMain函数根本就不需要!这就是为什么你要把DllMain的功能放在你自己身上。链接器会代替你把它插入到dll中。

http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

/MD, /MT, /LD (使用运行时库)


/LD

创建一个DLL。

将/DLL选项传递给链接器。链接器会寻找,但不需要DllMain函数。如果你不写DllMain函数,链接器会插入一个DllMain函数,返回TRUE。

链接DLL的启动代码。


http://msdn.microsoft.com/en-us/library/ms682583(VS.85).aspx

DllMain回调函数

一个可选的动态链接库(DLL)的入口点
 
VBAG >> :

间接地,在你关闭终端之前,dll文件的主体是不会被覆盖的。

.

然而,我有几个静态数组是在全局层面上声明的,也许会影响到它。


所以你实际上没有DLLSample,就像你之前声称的那样? 对。

VBAG>>

我想了解如何 "仔细 "调整项目,以写出我所说的attach/detach。

 
HideYourRichess писал(а)>>

所以你实际上没有DLLSample,就像你之前声称的那样? 对。

嗯,一般来说,是的,如果你明确使用DllMain。而一般来说,所有的项目设置都应该取自采样器。Megakvot建议明确规定DllMain,尽管如果你在Delphi中编写,你可以不在那里规定DllMain,而把所有的attach/detach 放到初始化和最终化中。

除了我在全局层面添加了两个静态数组外,整个项目都来自DLLSample。

我在测试器中运行的EA中调用原始函数。当测试完成后,DLL被保留在内存中。情况是这样的。

 
VBAG >> :

除了我在全局层面添加了两个静态数组外,整个项目都来自DLLSample。

我在测试器中运行的EA中调用原始函数。当测试完成后,DLL被保留在内存中。情况是这样的。

啊哈,所以问题发生在测试者身上。它不是一个脚本,也不是一个指标 - 它是专家顾问。那么,这个EA在正常情况下,而不是在测试器中是如何表现的?


顺便说一句,"全局层面的两个静态数组 "在理论上不应该以任何方式影响到dll。特别是如果你根本不使用dll来访问它们。


有趣的是。我帖子中的一些文字不见了,你是在回复我,尽管我没有删除它。该论坛出现了故障。

 
HideYourRichess >> :

啊哈,所以问题出现在测试者身上。而且它既不是一个脚本,也不是一个指标--它是一个EA。那么,这个EA在正常的、非测试者的条件下是如何表现的?

事实上,我在一年前也遇到过这些问题,当时我有EA-

将我的测试员的运行与系统的运行进行了核对。

但是......有人设法把每个人都放倒了几次,说是歪手和节目中的错误。

上帝不允许有人成为这样的老板 :-(。

附:带有运行库的polinked dll VC 2005:指标和脚本之后

>>一切都能正常卸货。

 
jartmailru >> :

事实上,我在一年前也遇到过这些问题,当时我有EA-

将我的测试员的运行与系统的运行进行了核对。

但是......有人设法把每个人都放倒了几次,说是歪手和节目中的错误。

上帝不允许有人成为这样的老板 :-(。

附:带有VC 2005运行库的Polinked dll:指标和脚本之后

一切都卸载得很好。

再一次,我在任何地方都没有关于dll的问题。如果你有问题,那是你的编程问题,可能不是MS或MT的错。而你需要使用 "老 "VC的事实--这应该是很清楚的。