There is a sucker born every day...and that would be me today it would seem b/c I kept on plugging away on this Embellish thing!
Even with VACPP 3.08, there are a lot of problems. I don't think the developer finished porting it from Borland to VACPP. Things like inconsistent macro WIN95COMPILE sometimes being WIN95_COMPILE and those missing symbols being a lack of either....
So little by little I made more progress, however I'm still stuck at that previously reported error:
...
Libraries [.lib]: cpprmi36 os2386 misc\EmbMisc.lib filetypes\EmbFiles.lib api\Embapi.lib paint\EmbPnt.lib
Definitions File [nul.def]: JView_os2.def
Y:\image\JView_os2.def(10) : warning LNK4087: The obsolete keyword HEAPSIZE is ignored
Y:\image\JOEVIEWMAIN.OBJ(JOEVIEWMAIN.c) : error LNK2029: "JVW_DestroyMsgQueue" : unresolved external
Y:\image\JOEVIEWMAIN.OBJ(JOEVIEWMAIN.c) : error LNK2029: "InitializePressurePad" : unresolved external
Y:\image\JOEVIEWMAIN.OBJ(JOEVIEWMAIN.c) : error LNK2029: "JVW_DestroyAccelTable" : unresolved external
...
The above is a result of the following statement:
"ILINK /NOFREE /PM:PM /NOD /NOE /EXEPACK:1 /PACKCODE /PACKDATA @JView_os2.lnk"
where the contents of JView_os2.lnk are:
JOEVIEWMAIN.OBJ
EMB.EXE
JView.map
cpprmi36 os2386 misc\EmbMisc.lib filetypes\EmbFiles.lib api\Embapi.lib paint\EmbPnt.lib
JView_os2.def
So off I went looking at the embapi.lib library b/c all of the above identifiers are listed in the api.h & api.c source files:
API.C/* This functions terminates the previously initialized */
/* message queue. This is only used under OS/2 */
#pragma argsused
VOID API_IMPEXP JVW_DestroyMsgQueue(J_HMQ hmq)
{
#if WIN95_COMPILE
#else
WinDestroyMsgQueue((HMQ)hmq);
#endif
return;
}
API.HVOID API_IMPEXP JVW_DestroyMsgQueue(J_HMQ);
Heck...compiling just JOEVIEWMAIN.c by itself seems to be fine, no issues, the OBJ file is created, so that's telling me (I think) that the api.c & api.h are correctly referenced.
So I took a stab at having ILIB take a peek at the contents of embapi.lib, in particular I just did a quick LIST command to see what's there:
...
- External Definitions:
0060:_JVW_DestroyMsgQueue (OFFSET:0x00000d80, SIZE:0x00000051):
- Public Definitions:
_JVW_DestroyMsgQueue
...
and so as I stare at this the only thing jumping out at me is this: is the calling convention here the problem? i.e., that "_" character prefixed onto the function name???
Alas, that's the limit of what I can decipher...for all I know the provided LIBs have been created with a different calling convention, _System vs _Optlink (that my IBMCPP 3.6.5 is using by default).
The following paragraph from the on-line IBMCPP help system seems to explain the results I'm seeing:
You cannot call a function using a different calling convention than the one with which it is compiled. For example, if a function is compiled with _System linkage, you cannot later call it specifying _Optlink linkage.
...but is that the real problem??? LOL
...and if YES, how do I correct/account for it? Do I compile my code with the '/Ms' option???