c++ - Error 42: Symbol Undefined _URLDownloadToCacheFileA 24
- SL <shadowlord13 gmail.com> Mar 18 2005
- "Walter" <newshound digitalmars.com> Mar 18 2005
- SL <shadowlord13 gmail.com> Mar 18 2005
- SL <shadowlord13 gmail.com> Mar 18 2005
- "Walter" <newshound digitalmars.com> Mar 18 2005
- SL <shadowlord13 gmail.com> Mar 18 2005
- "Walter" <newshound digitalmars.com> Mar 18 2005
- SL <shadowlord13 gmail.com> Mar 18 2005
- Scott Michel <scottm aero.org> Mar 24 2005
I'm getting this error in a program, on linking:
Error 42: Symbol Undefined _URLDownloadToCacheFileA 24
The program #include's <urlmon.h>, and urlmon.lib is included in the
compile line. I generated urlmon.lib from urlmon.dll with implib
("Digital Mars Import Library Manager Version 7.5B4n").
Compile line:
dmc.exe -oSyncStarmap.exe c:\dm\lib\urlmon.lib -D -g -DWINDOWS -DMULTI
SyncSm.cpp genalg.cpp randalg.cpp SyncSm.def -mn -5 | more
Paths etc:
set path=c:\dm\bin;c:\windows\system32;c:\windows;c:\windows\command
set lib=c:\dm\lib
set include=c:\dm\include
What I see when I attempt to compile it:
Compiling SyncStarmap...
SyncSm.cpp:
genalg.cpp:
randalg.cpp:
link
SyncSm+genalg+randalg,SyncStarmap.exe,,c:\dm\lib\urlmon+user32+kernel32,Syn
cSm/co/noi;
OPTLINK (R) for Win32 Release 7.50B1
Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved
SyncSm.obj(SyncSm)
Error 42: Symbol Undefined _URLDownloadToCacheFileA 24
--- errorlevel 1
SyncSm.cpp is calling URLDownloadToCacheFile like so:
int hresult = URLDownloadToCacheFile(NULL,
"http://there-was-a-url-here-but-I've-removed-it", path, sizeof(path),
0, &downloadCallback);
Since it's compiling right, it must be a problem with the lib, right?
The function names inside the lib don't look mangled at all (It's just
"URLDownloadToCacheFileA", so ... c:\dm\include\win32\urlmon.h has this
definition for URLDownloadToCacheFileA: STDAPI
URLDownloadToCacheFileA(LPUNKNOWN,LPCSTR,LPTSTR,DWORD,DWORD,LP
INDSTATUSCALLBACK);
How can I make this work? What's wrong with it?
I've attempted remaking the lib:
Originally I had done just implib urlmon.lib urlmon.dll (I copied
urlmon.dll into the c:\dm\bin folder, and after running implib, copied
the generated urlmon.lib into c:\dm\lib)
The lib made by implib /system urlmon.lib urlmon.dll resulted in the
same link-time error.
And this did too: implib /system /v /suffix urlmon.lib urlmon.dll
This one didn't work, I got a "Could not start SPPN.EXE!" error: implib
/system /v /suffix /Ic:\dm\include\win32 urlmon.lib urlmon.dll
Mar 18 2005
"SL" <shadowlord13 gmail.com> wrote in message news:d1f39h$1eor$1 digitaldaemon.com...I'm getting this error in a program, on linking: Error 42: Symbol Undefined _URLDownloadToCacheFileA 24 The program #include's <urlmon.h>, and urlmon.lib is included in the compile line. I generated urlmon.lib from urlmon.dll with implib ("Digital Mars Import Library Manager Version 7.5B4n").
Examine the urlmon.lib to see if it defines the symbol. The lib.exe program can generate a listing of its table of contents.
Mar 18 2005
Walter wrote:"SL" <shadowlord13 gmail.com> wrote in message news:d1f39h$1eor$1 digitaldaemon.com...I'm getting this error in a program, on linking: Error 42: Symbol Undefined _URLDownloadToCacheFileA 24 The program #include's <urlmon.h>, and urlmon.lib is included in the compile line. I generated urlmon.lib from urlmon.dll with implib ("Digital Mars Import Library Manager Version 7.5B4n").
Examine the urlmon.lib to see if it defines the symbol. The lib.exe program can generate a listing of its table of contents.
see how to use it, but it didn't like that): C:\dm\bin>implib /system /v /suffix urlmon.lib urlmon.dll Digital Mars Import Library Manager Version 7.5B4n Copyright (C) Digital Mars 1999-2002. All Rights Reserved. Modified by Jan Knepper urlmon.lib Input is a Windows NT DLL file 'urlmon.dll'. Output is a Windows NT import library. Digital Mars Import Library Creator complete. C:\dm\bin>lib /? Digital Mars Librarian Version 8.00n Copyright (C) Digital Mars 2000-2002 All Rights Reserved www.digitalmars.com Error: /?.lib : Invalid argument C:\dm\bin>lib Digital Mars Librarian Version 8.00n Copyright (C) Digital Mars 2000-2002 All Rights Reserved www.digitalmars.com library file (.lib) urlmon.lib action-object [-+*] (.obj) list file (.lst) urlmon.lst Error: Corrupt file 'urlmon.lib', Typ=xf1, Len=xcd1e Well that's weird. Guess I'd better try to find something about lib in the manual/readme/something.
Mar 18 2005
Ok, 'lib -l urlmon.lib' is erroring with 'Corrupt file 'urlmon.lib', Typ=xf1, Len=xcd1e' Hmm. So implib didn't do its job right? If I do 'implib urlmon.lib urlmon.dll', and then run 'lib -l urlmon.lib' I get the same error, ecept Len is xcd17 instead of xcd1e.
Mar 18 2005
"SL" <shadowlord13 gmail.com> wrote in message news:d1fegt$23ic$1 digitaldaemon.com...Ok, 'lib -l urlmon.lib' is erroring with 'Corrupt file 'urlmon.lib', Typ=xf1, Len=xcd1e' Hmm. So implib didn't do its job right?
Or something else is happening. implib has been in the field for over a decade, it works fine.If I do 'implib urlmon.lib urlmon.dll', and then run 'lib -l urlmon.lib' I get the same error, ecept Len is xcd17 instead of xcd1e.
Mar 18 2005
Or something else is happening. implib has been in the field for over a decade, it works fine.
I just redownloaded the "Basic Utilities Package" and tried the implib.exe in that (That implib.exe is version 7.6B1n, the old one I had was 7.5B4n). It actually appears to have made a library which doesn't confuse lib.exe. However, the .lib doesn't contain the NN, so I'm still getting the "Symbol Undefined _URLDownloadToCacheFileA 24" error. Hmm.
Mar 18 2005
"SL" <shadowlord13 gmail.com> wrote in message news:d1frg2$2hl9$1 digitaldaemon.com...Or something else is happening. implib has been in the field for over a decade, it works fine.
I just redownloaded the "Basic Utilities Package" and tried the implib.exe in that (That implib.exe is version 7.6B1n, the old one I had was 7.5B4n). It actually appears to have made a library which doesn't confuse lib.exe. However, the .lib doesn't contain the NN, so I'm still getting the "Symbol Undefined _URLDownloadToCacheFileA 24" error.
Now we're getting somewhere. Check out www.digitalmars.com/faq.html#sysimport
Mar 18 2005
Walter wrote:Now we're getting somewhere. Check out www.digitalmars.com/faq.html#sysimport
Ah! Thanks. I thought I might have to do something like that, but was hoping to find an automatic way to determine the ##s and insert them. Hmm - I should perhaps be able to (in theory) make a script to look through the .h for a lib and generate a .def from it, since the ## is apparently the number of bytes its parameters are. That'd be more trouble than its worth for just the one function I need now, but might be useful in the future, and for other people. Hmm. (P.S. I noticed that Microsoft's link.exe no longer has a /convert option (at least in the link.exe in "Microsoft Visual C++ Toolkit 2003", which is supposed to be the same as the one in VS.NET 2003) - I'm mentioning this because http://www.digitalmars.com/ctg/coff2omf.html suggests running link /lib /convert file.lib to make the lib usable by coff2omf))
Mar 18 2005
SL wrote: > (P.S. I noticed that Microsoft's link.exe no longer has a /convertoption (at least in the link.exe in "Microsoft Visual C++ Toolkit 2003", which is supposed to be the same as the one in VS.NET 2003) - I'm mentioning this because http://www.digitalmars.com/ctg/coff2omf.html suggests running link /lib /convert file.lib to make the lib usable by coff2omf))
It's not hard to find slightly older versions of LINK that still support the /convert flag. Google for MASM. The current MASM package has a LINK that works.
Mar 24 2005








Scott Michel <scottm aero.org>