我有一个BPL项目(有一些基础东西)和一个EXE项目,它在其搜索路径中有另一个项目输出的位置(BPL和DCP).当使用"Build With Runtime Packages"构建EXE项目时,它构建正常.但是,它需要我部署EXE和BPL.到现在为止还挺好.
因为我宁愿只部署EXE(无论它变大),我猜我只是取消选中"Build With Runtime Packages"并且就是这样,但事实并非如此.它不会构建,并开始抱怨缺少的类.我可以编译EXE项目的唯一方法是将实际BPL项目的DCU路径添加到EXE项目的搜索路径中.我可以这样做,但为什么我被迫指向DCU?德尔福不能把它们从BPL中拿走吗?这不只是一个品味的问题,如果我走这条路,并链接到DCU,当谈到属于表格的DCU时,它会询问我表格DFM,迫使我也将我的来源文件夹包含在EXE中项目的搜索路径,现在它们似乎正在编译,这是令人望而却步的.每次我想编译我的EXE项目时,我都无法重新编译我的BPL项目代码库.
我希望我已经说清楚了.
如何实现标题中提出的任何帮助表示赞赏.
谢谢.
在过去的几天里,我一直在努力解决一个我无法理解的错误.这仅发生在Windows 2012服务器(64位)中,而在以下Windows版本中不会发生(至少):Windows XP(32位),Windows 7(32位和64位),Windows 8(64位),Windows 8.1 (64位),Windows 10(64位),Windows 2003 Server(32位).
请注意,在所有情况下,应用程序都是32位二进制文件.
当应用程序启动时,它初始化一些东西,最后它创建了一系列线程,所有这些线程都处于挂起模式,以便我可以在以后手动启动它们.
在下面的代码中,人们期望在睡眠之后启动t.但是,当我尝试在线程上显式调用Start时,我意识到它已经启动(不知何故),导致线程已经启动异常(考虑到线程已经启动,这将是正常的).
// some initialization code is run before this, but nothing directly related
procedure foo;
var
t : TThread; // note that there can be no reference to this thread from the outside since it's a local var
begin
t := TMyThread.Create(true); // TMyThread
sleep(3000); // time window of 3 seconds where the thread shouldn't have started
t.Start; // now …Run Code Online (Sandbox Code Playgroud) delphi multithreading delphi-xe windows-server-2012 delphi-10-seattle