NTWaitforMultipleObjects error when freeing DLL in Delphi with TVirtualTreeView - multithreading

TVirtualTreeview is pretty much awesome, but many times when I close an window referenced by a DLL in my project that has a TVirtualTreeview in it I get the NTWaitForMultipleObjects error.
The problem is somewhere deep in TVirtualTreeview and other guys in the office have tried lots of stuff to fix it, I was just wondering if anyone else has had a similar issue in Delphi 7.
Or if it's fixed in 2009, because we've got that and are planning on upgrading our code (err.. beating our heads into the ground) soon.

Maybe this helps.

The thread Ulrich pointed to should be enough to solve this problem but I don't really think it's a bug because as I understand it you're doing it wrong:
http://blogs.msdn.com/oldnewthing/archive/2009/06/26/9804500.aspx
The solution is to clean up your form / treeview before DllMain gets called with DLL_PROCESS_DETACH.

Related

MFC GetParent function returns null

Hello there back in 1999 early 2000 a lot of my apps used this MFC Export dialog extension which added filters to file extensions, because MFC didn't yet have that (at least that's what I remember to be the reason, maybe I was drunk I don't now), the library can be downloaded here: https://www.codeproject.com/Articles/54/Adding-filters-to-the-Open-File-dialog
Now I know that this functionality is built in already, but its easier to fix one library then to fix all of my apps
Now if I compile this with VC++ 6 everything is fine, the problem is that I would like to use a bit more modern compiler
Here are my changes that I added to this lib over the years (its a big file so I will post a link instead): https://pastebin.com/pj0j2nL4
The example code that I use to test this library can be found here: https://www.mediafire.com/file/xz5mxwy2rcmb9h3/FileExportDialog_demo_upg.zip/file
Just click on File->Export and you should see the problem
Now the problem happens on the library's void CFileExportDialog::OnTypeChange() method
is this part
CWnd *fileNameBox = GetParent()->GetDlgItem(edt1);
if (fileNameBox == NULL)
fileNameBox = GetParent()->GetDlgItem(cmb13);
For some reason, GetParent() returns NULL (I cannot even get to GetDlgItem() at this point)) pointer, I have no idea why does it do that, and the strangest thing is that this used to work on VC++ 6 (it also worked on MFC7 as well), why doesn't it work on VC++ 17 (MFC140) anymore ?
Hopefully someone has an idea what changed and how can I fix my library
Thanks for Anwsering and Best Regards

PHP framework AMPHP/THREAD no longer in use?

Was amphp/thread discontinued? amphp/amp is working perfectly but when I run ANY of the example coding from amphp/thread git, I get all kinds of errors. Not one example is working. I noticed last update was in 2014.
Is there any way for me to get amphp/thread working? Was it replaced? With what replacement?
I have php 7.0 installed on mac, built with thread safety. EV, EVENT, UV are all enabled.
My .jason file looks like this 
"amphp/amp": "v0.17.0", "amphp/thread": "v0.8.1"
Much appreciated.
I found the answer to this question in a discussion here:
https://github.com/amphp/thread/issues/14
amphp/thread is no longer being supported but there is hope that it will be picked up again in the future to work with amphp/amp v2. No concrete timeline on when this will happen was given.
Also, amphp/parallel is considered to be the replacement for amphp/thread.

C++ Builder XE 5 Ghost component in BPL file

I have been haunted by this ghost problem for a long time. I have a component library that I wrote myself, containing some derived VCL components.
Whenever i try to run an application that uses this library (MyComponents.bpl), it will show this error:
Mbutton used to be one of the components in the library, but it has long obsolete and removed from the project.
I have checked all files (cpp and h files) in the MyComponents project, none of them has any reference to Mbutton.
The host application source code is not referring to this component as well.
And I have been very sure there is only one copy of MyComponents.bpl in my whole PC. (which is located in the folder where the application is uisng it.)
There is no duplicate in Windows/System32.
Cleaning/Uninstalling the components library and recompiling/Re-installing it does not help.
Can anyone help me track down what's the cause of this ghost component problem, please? Many thanks.
Ah, found the source of the problem... There is a MyComponents.LIB which is referencing Mbutton component. The compiler was complaining about MyComponents.BPL, so I was misleaded all the time.
Removed the reference to MyComponents.LIB in the cbproj file and gone with the problem. Just to be sure, I deleted the LIB file as well.
This PC wasn't my original development PC, it was used by my colleague who has resinged, and I took over the PC after my PC has broken down. Don't know why she took my BPL and convert it into LIB... sigh, problem solved, thanks anyway to all who helped.

PCL Visualizer demo interaction customization crashing on spinonce

I'm trying to get the PCL Visualizer demo examples to work (all code here: http://pointclouds.org/documentation/tutorials/pcl_visualizer.php) for Windows, PCL 1.6, 32 bits version.
It works fine except for the Interaction Customization part, which is ironically the one i'm most interested on. An unhandled exception occurs at the spinOnce(100) line on the main method. From the long search I've done, it looks like it is deeply connected to VTK not being thread safe and keyboard/mouse callbacks interfering with the VTK window. However, I don't think I've completely understood this and could be mistaken. I have found a very similar question here in stackoverflow (using "pcl::visualization" in different threads from different instance of a class) and I tried using scoped_locks around the spinonce, as he suggests, but I think I'm not doing it right.
Has anyone managed to fully use this example on win32? For reference, here is my poor attempt at locking the spinonce:
while (!viewer->wasStopped ())
{
boost::mutex vis_mutex; //storage for static lock
boost::mutex::scoped_lock lock(vis_mutex);
viewer->spinOnce ();
boost::this_thread::sleep (boost::posix_time::microseconds (100000));
}
Thanks in advance!
I am afraid that it may be related to the version of PCL.
Tutorials are made to match latest versions of PCL and since 1.6 things might have changed.
I recommend you to update to the latest PCL from github. (actually I use code from this tutorial on win64 right out of the box, no issues)

How can I use classes from VisualBasic-Express in VBA for Excel or Access projects?

I saved my VB-Express code as .dll and registered it with regasm and made a .tlb file.
But when I try to run a function from it in an Excel-modul I get: Run-time error ‘453’: Can’t find DLL entry point RegisterServiceProcess in kernel32
What step did I miss?
See http://richnewman.wordpress.com/2007/04/15/a-beginner’s-guide-to-calling-a-net-library-from-excel/
or better still try out ExcelDNA ( http://groups.google.com/group/ExcelDna )
I think you're creating a .Net dll and trying to call it from a COM-oriented environment (VBA), which isn't going to work without help. If I'm guessing right, then you need to investigate the COM Interop elements of .Net: Google throws up lots of promising-looking links, one of which is this article.
It looks a bit unpleasant, but I expect the nastiness can be tucked away somewhere...
Try this Microsoft Knowledge Base article: Can't Run Macro That Calls 16-bit DLL in 32-bit MS Excel.
Do you have the proper rights to access the DLL?
Thanks for the input to everybody, you helped me a big step further.
After following the guides you provided I got: Run-time error: '-2147024894' (80070002)': File or assembly name AssemblyName, or one of its dependencies, was not found.
But I could fix that with this Workaround.

Resources