Re: error building Fox-1.7.90 on windows
"John Selverian" <[email protected]> Thu, 18 Jun 2026 09:47:44 -0400
| Newsgroups | gmane.comp.lib.fox-toolkit.user |
|---|---|
| Organization | JAHM Software |
| Message-ID | <[email protected]> |
When I try to compile one of my programs (64-bit v1.7.90) I got this error: FOX-1.7.lib(FXString.obj) : error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MT_StaticRelease' in ChangeWidgetColors.obj In the project setting for building the foxlib I had to switch the "Runtime Library" from type: dll to lib In my programs: In debug: error C2039: 'unescape': is not a member of 'FX::FXString' I had to change it to: comparecase() unescape() now the debug buils and runs fine. in release these work: FXString::comparecase() FXString:: unescape() But I'm getting this error now: 1>FOX-1.7.lib(FXDir.obj) : error LNK2019: unresolved external symbol WNetOpenEnumW referenced in function "public: static int __cdecl FX::FXDir::listShares(class FX::FXString * &)" (?listShares@FXDir@FX@@SAHAEAPEAVFXString@2@@Z) 1>FOX-1.7.lib(FXDir.obj) : error LNK2019: unresolved external symbol WNetEnumResourceW referenced in function "public: static int __cdecl FX::FXDir::listShares(class FX::FXString * &)" (?listShares@FXDir@FX@@SAHAEAPEAVFXString@2@@Z) 1>FOX-1.7.lib(FXDir.obj) : error LNK2019: unresolved external symbol WNetCloseEnum referenced in function "public: static int __cdecl FX::FXDir::listShares(class FX::FXString * &)" (?listShares@FXDir@FX@@SAHAEAPEAVFXString@2@@Z) 1>GetPlotData.exe : fatal error LNK1120: 3 unresolved externals -----Original Message----- From: [email protected] <[email protected]> Sent: Thursday, June 18, 2026 9:18 AM To: [email protected] Cc: [email protected]; [email protected] Subject: Re: [Foxgui-users] error building Fox-1.7.90 on windows On 2026-06-18 07:38, John Selverian wrote: > That fixed it. Thanks. > > 2 questions: > > 1) I get a bunch of conversion warnings...are you interested in seeing > these or do you already know about them? Remember I cobbled together the Visual Studio project files to begin with; I can compile it myself and see them. The problem is, partially, you can still compile FOX as 32-bit as well, and some warning fixes would be "unfixed" when you switch built targets. from x64-64 to x86. On linux, also, I still occasionally test on 32-bit raspberry pi, although the move to 64 bit arm is in advanced stage. The situation is a bit better as I do not pass -Wconversion flag there [it flags too much]. I do occasionally have -Wconversion flag on, to see if it catches anything worthwhile; widening 32- to 64-bit is hardly ever a problem. The other way around *could* be, some times. In the integer world, conversions don't really cost anything; loading small value and widening is one instruction on x64-cpu. In the floating point world, there is pain doing conversions. Its not a lot of pain for scalars, but for vector programming one could leave a 2x performance loss, since vector registers hold half as many doubles as singles. GCC has a separate flag for that, and its always on. For more performance- sensitive programs, I occasionally chase down all places where this flag reports problems. > 2) The library is called "foxlib.lib" the current one I'm using > is called "FOX-1.7.lib" Did you or I change the name? Not consciously... > 1 observation, it's probably a c++ question: > > I have a very large data structure. When the program is running > it uses about 700 MB of RAM. It runs without problems. I also > have a mode where it makes some copies of this large data > structure and runs a bunch of checks on it. When it is doing this > is used about 2.4 GB. I recently noticed that the data structure > is now being corrupted when I run these checks. After much > debugging I decided to change my app from 32-bit to 64-bit. It > now runs fine. Yes, in 32-bit mode, you can not use more than 4GB. Actually, its less, as libraries, o.s. etc. also take up some space. I believe the real limit is 3GB, at least on linux it is. It may be less on Windows. Some processors had page table tricks to allow aggregate collection of processes to use more than 4GB physical ram. but all that is moot in the 64-bit world. Most 64-bit CPUs have limit to 48 bits, but some are pushing to a few more bits 50 maybe 52. However 48 seems common. With current RAM prices, you can't afford that much memory anyway ;-) 2^48 = 281,474,976,710,656 281TB 2^52 = 4,503,599,627,370,496 4500TB or 4.5PB 2^64 = 18,446,744,073,709,551,616 18446744TB or 18.4EB Around ~1TB is doable on high-end server hardware. But blurring the lines between RAM and SSD, I can see going beyond 2^48 if you wanted to memory-map large SSD storage into virtual memory. -- JVZ