Kind of cyclic reference in DLL, but unknown how - Compile error: “Missing XXXX.clw file”

Hi All,

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.

1 Like
  1. Remove all OBJ files for your program
  2. Try to reproduce the problem
  3. If the problem can be reproduced, use some tool for multi-file search in CLW and INC files for the string with the name of reported missing file.

Hi Also,

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.

The error message was as follows

(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.

On my computer it was

Source file brains.clw not found

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.

I used CLAMAKE to build the test project from the command line.