Unresolved External

I have been out of programming in clarion for 15 years. I have an multidll app that worked ok 15 years ago but now I get a bunch of Unresolved External errors when trying to build it

Make sure you compile the ‘data dll’ first.
If that doesn’t fix it show us the text of the errors you’re getting.

data.dll compiled fine

Still getting
Unresolved External ONCLOSEEVENTCANCELLED@F13WINDOWMANAGER in acap002.obj

about 148 of these

thanks for your help

Is this an environment that was previously working, or did you upgrade Clarion since then?

I used Clarion 10 for this builld. Maybe I have not built this project since Clarion 9. Not sure.

thanks for your reply.

Couple of things to check:

  1. In the .EXP of the global DLL, do you find ONCLOSEEVENTCANCELLED anywhere?
    IF Yes:
    Is your globalDLL.LIB new?
    Is your globalDLL.LIB file added to your EXE’s project?
    Could there be any other copies of an old globalDLL.lib hanging around somewhere in a place that would be preferred by the redirection file?
    END
    IF NO:
    Try doing a complete regen of your global DLL, then compile and check again
    END
    It could be possible that your ABCLInkMode/ABCDLLMode defines are not assigned correctly. I’d check those out on the EXE app and the global app.
1 Like

thanks I’ll give a try.

Sometimes people make certain .EXP files readonly. That could be a possible reason why that method isn’t included (if it’s not).

Are the Data DLL and other projects ALL set for the same Build type Release or Debug?

The default location for LIB files is OBJ\ Release or Debug so if you mix build types you can have an obsolete file. You can look in OBJ folder at the CwProj.FileList.Xml file to see the path of the LIB file being used.

See this post for how to move the LIB file to be written to the project folder with the DLL file:

That method was introduced in Clarion 10.0 Build 12709

FEATURE: ABC: WindowManager: new method OnCloseEventCancelled that is called when the user cancels the windows close using Message (if the record was changed)

It’s not present in Clarion 9 or 9.1 - you need to make sure all the CLAXXX DLLs etc you’re working with are from the Clarion 10 Build you’re using.

While it’s important to have the C10 Cla DLLs, if he had the C9 DLLs it would not cause the Unresolved External linker error. Also OnCloseEventCancelled is not exported from ClaRun.dll

1 Like

That’s why I suggested checking the .EXP. If the method is missing from there, something didn’t get generated correctly since the previous version.

Checking the EXP is a good first step, and that EXP file is always in the Project folder.

The EXP is used to make the DLLs LIB file that is just used for the linker to check the names. That LIB can also be viewed in Notepad to see if the OnCloseEventCancelled symbol is is there. The next question where is the LIB written by the Data DLL project OBJ Release or Debug? Next where is the problem Project reading the LIB?

Thanks lots of good information to check out.

found an extra globaldll.new and deleted it. This cured the problem. thanks

1 Like