Hi All,
I’m having some trouble with C10. Just started the process of upgrading the apps from 6.3 (I know, it’s about time). I created an empty frame and a data dll and I’m getting the error below. The dll is linked into the exe and the dll exports all file declarations and ABCs. There are no extensions added the frame or the dll.
Any ideas where I can start looking for the problem?
I’m running 10.0.0.12799
Ok, I think I’ve got this sorted now.
I was being a bit cavalier with compile settings.
I set the setting as suggested by @CarlBarnes
I also set the “ABCs as External” options below.
It feels like C6 was super forgiving about the settings, or C10 is making me do things properly at least.
I’ve been a Clarion dev for years now, but I’ve always been working on established applications rather than putting together large apps from scratch.
to be clear, you should not set the ABCDllMode and ABCLinkMode defines. They are set by the template based on what you tell the template.
In your screen-shot above, “Generate template globals and ABC’s as External” should be ON in all but one of the DLL’s. In one DLL, let’s call this the “root dll” this option should be OFF. And then this “root DLL” is added as an External DLL Module to “all the other apps”.
In other words, ABC is compiled into root DLL, and Exported from there.
Then all the other apps (DLL’s and EXE’s) are linked to that root DLL, and can therefore use the code exported by that DLL.
C10 is certainly stricter than C6 in some places, but this is not one of those places. I’m guessing that your colleague who set this up in Clarion 6 just “did it right”.
It is more strict on some things, but it has a much enhanced project and build system taken from Sharp Develop that is based on Visual Studio.
In the OBJ folder you will find a new file Project.FileList.XML that lists every file feeding your build and files being created. It is handy. This somewhat replaces the .LNK file, which is still made but deleted as a temp file.
One change that may cause you problems is the LIB file used to link DLLs is placed in the OBJ Debug or Release folder. That would allow a Debug build to export different functions. Most people prefer to modify the RED file to place that in the same folder as the DLL. This is a favorite change of Bruce. I think this is the link to that thread.