We are in the process of converting a C6 legacy application to C11.1. It is a multi DLL program (> 35 DLL’s).
We started a new solution by adding one DLL at the time beginning with the Data DLL. The first DLL compiles well. But the second DLL (tabellen.app) in order fails to compile with the error: “Missing brains.clw file”.
Brains.app is the name of the executable app which is of course is last in order to be compiled. So for some reason the second DLL is referencing forward to this app, making it a cyclic reference.
Deleting some procedures made a difference. If I delete some procedures the compile error disappears. So the compile error is tied to some procedures, but why? There is nothing special about these procedures.
I tried to find out where this cyclic reference comes from:
There is nothing like ‘Include(‘brains.clw’) in the source code
No setting in a template as far as I can see
Not defined in the project tree
We tried a “SaveAs” in Clarion 6 for the app file, but is didn’t make any difference.
In a TXA export, a text search on ‘brains.clw’ doesn’t give a hit.
Any suggestions on what I can do? So far I am sure this unwanted cyclic reference is tied to a few procedures, but I cannot see why.
These three things I have already done. The strange thing there is no string with ‘brains.clw’ in the CLW and INC files. And also not in the .crwj and .sln file. So I have really no clue where this reference is coming from. It mus be something in the .app file.
Could you post the screenshot with the error. I do not see any messages in compilers, in the Project Manager and in the Application Generator which can produce the message you mentioned in the first message.
My colleague found it. In many windows the icon was defined as ICO(brains) without the .ico file extension. In Clarion 6 that gave no compile errors but apparently in C11.1 it does.
So just a missing file extension was the cause. Problem solved.
(link string, 1,1)Fatal error: Source file brains.clw not found
if the error message had been quoted accurately, you would have received an answer much earlier.
The compiler includes records to the object file with names of files referenced in compiled source: names files given in PRAGMA(‘compile’) and PRAGMA(‘link’) directives, files used as parameters of ICON, CURSOR and WALLPAPER attributes, as parameters of IMAGE controls, etc. When the Project Manager adds an object file (for example, after successful compilation of sources) to the link list, it parses that object file. If referenced files are found, they are adding to the compilation or to the link list depending from extension. If file’s extension matches an extension of source files for one of registered compilers, that file is considering as source and adding to the compile list. Otherwise, the file is adding to the link list and its nature (object, library, manifest, resource, etc.) will be determined by the linker. If file name found during parsing of an object file has no extension, the Project Manager assumes the .clw extension.
without the preceding link (link string, 1,1) you have. That was less informative, maybe it is a difference between EE and PE. For this project I am working on Clarion 11.1 PE.
I will test this on a EE machine if this is really true.