小编sum*_*ame的帖子

地狱图书馆(又名DLL地狱)

在我的一个项目中,我使用一个Delphi应用程序,它动态加载一个包装DLL(导出C-Style函数),后者又与一堆第三方DLL静态链接.

它在我的测试机器上工作正常,但在我的客户计算机上它无法初始化时出现错误消息"无法在TMYlibrary.dll中找到入口点_somefunction @ 4AKKZ".

在使用sysinternal的进程监视器进行一些调查后,我意识到Windows首先会在windows/sytem32中看到DLL,所以如果在system32中出现类似于我的 DLL的DLL,那么windows会选择那个并尝试找到我的函数入口点.它 - 会失败.

你知道改变windows的DLL搜索行为的可能吗?


附加信息

  • [ 更新 ] .exe文件位于应用程序文件夹树的顶层.
  • Wrapper和第三方DLL都位于我的apps文件夹的Subfolder/bin中
  • 开发平台是Windows XP/7,使用VS2008为dlll和Delphi 2010进行应用

c++ windows delphi dll delphi-2010

4
推荐指数
1
解决办法
437
查看次数

在MATLAB单元索引数组中反向查找

我试图解决这个问题:

给定n个元素数组的索引向量的5x1单元阵列,我需要找到反向映射.

我所拥有的是关系"在第2组中,有元素15,16,17 ......"我想要的是"元素15是2,4,5组的成员".

这是我的单元格数组的结构

myCellArray  = 

[1x228 double]
[1x79  double]
[1x136 double]
[1x93  double]
[1x81  double]
Run Code Online (Sandbox Code Playgroud)

这是我的索引向量的一部分内容

myCellArray{2}(1:5) =

    15    16    17    18    19
Run Code Online (Sandbox Code Playgroud)

我想要的是一个包含每个元素的组成员资格索引的n个单元格的单元格数组.

救命?

matlab cell-array

4
推荐指数
1
解决办法
1782
查看次数

后增量算子的评估会以什么顺序发生?

特定

std::vector<CMyClass> objects;
CMyClass list[MAX_OBJECT_COUNT];
Run Code Online (Sandbox Code Playgroud)

这样做是明智的吗?

for(unsigned int i = 0; i < objects.size(); list[i] = objects.at(i++));
Run Code Online (Sandbox Code Playgroud)

或者我应该将循环扩展到此?

for(unsigned int i = 0; i < objects.size(); i++)
{
  list[i] = objects.at(i);
}
Run Code Online (Sandbox Code Playgroud)

c++ stl operator-precedence

3
推荐指数
2
解决办法
1570
查看次数

在沙盒上一个内存泄漏的第三方DLL

我正在寻找一种方法来治愈至少我必须使用的漏洞DLL的症状.虽然库(OpenCascade)声称提供了一个内存管理器,但我还是无法释放它分配的任何内存.

我至少希望将这个模块的调用放在"沙箱"中,以便在OCC模块甚至不再运行时保持我的应用程序不会丢失内存.

我的问题是:虽然我意识到这将是一个UGLY HACK(TM)这样做,是否可以预先分配一段内存供图书馆专门使用,或者围绕它构建某种沙盒以便我可以跟踪他们使用的内存区域,以便在我完成时自行释放它们?

或者那是丑陋的黑客,我应该尝试解决问题呢?

c++ memory-leaks memory-management opencascade

2
推荐指数
1
解决办法
284
查看次数

检测陈旧的互斥锁

是否有任何技术或工具可用于在运行时检测此类死锁?

在工作线程(几个中的一个,通常是4-6)中描绘这个

try
   WaitForSingleObject(myMutex);
   DoSTuffThatMightCauseAnException;
except
   ReleaseMutex(myMutex);
end;
Run Code Online (Sandbox Code Playgroud)

或者更普遍的是有一种设计模式来避免这些错误吗?

经过长时间的黑客攻击,我在上面的代码中编写了上面的代码

delphi debugging multithreading delphi-2010

1
推荐指数
1
解决办法
239
查看次数

关于物理引擎

有没有任何物理引擎可用于j2me,因为它是为symbian,iphone等请发给我链接或其他来源,我可以得到相同的回复尽快.在此先感谢大家

physics java-me

1
推荐指数
1
解决办法
636
查看次数

条件编译取决于当前活动项目

我正在为Delphi 2010中的大型应用程序开发一个新模块.

我在两个项目的项目组中组织了我的源代码,一个用于构建完整的应用程序,另一个用于启动我的测试套件(与主应用程序共享一些源代码).

在单元的初始化期间,我需要采取不同的行动,这取决于我正在编译的两个中的哪一个.

unit MySharedUnit
var
  flag : TFlagValues;

implementation
[...]

initialization

if IsTestProject then
  flag := TestValue
else
  flag := ReleaseValue;
end. 
Run Code Online (Sandbox Code Playgroud)

目前,我使用项目定义的环境变量(仅在一个项目的选项中定义)来决定活动项目.

我的问题是:

是否有另外一种或更优雅的方法可以做到这一点,比如内置的#define'd值,当测试应用程序应该在Release模式下运行时,不需要我手动修改项目选项?

delphi delphi-2010

1
推荐指数
1
解决办法
342
查看次数

优雅的方式来区分Path或Entry键

我有一个应用程序加载CAD数据(自定义格式),从本地文件系统指定绘图的绝对路径或从数据库.

通过将图纸标识符作为参数的库函数来实现数据库访问.

标识符的格式类似ABC 01234T56-T,而我的路径是典型的Windows路径(例如x:\Data\cadfiles\cadfile001.bin).

我想编写一个包装器函数将一个String作为一个参数,它可以是一个路径或一个标识符,它调用适当的函数来加载我的数据.

像这样:

Function CadLoader(nameOrPath : String):TCadData;
Run Code Online (Sandbox Code Playgroud)

我的问题:我怎样才能优雅地决定我的字符串是一个idnetifier还是文件的路径?使用正则表达式?或者只搜索'\'和':',它们没有出现在标识符中?

regex delphi delphi-2010

0
推荐指数
1
解决办法
150
查看次数