digitalmars.D.bugs - library pragma doesn't like extra periods
- J C Calvarese (45/45) Apr 17 2005 I found a problem where D gets confused by
I found a problem where D gets confused by pragma(lib, "recls.D.lib"); and pragma(lib, "recls.dm.lib"); Somehow, it loses the ".lib" at the end. Here's my code: import std.stdio; import std.recls; version(origNames) { pragma(lib, "recls.D.lib"); pragma(lib, "recls.dm.lib"); } else { pragma(lib, "recls_D.lib"); pragma(lib, "recls_dm.lib"); } pragma(lib, "wininet.lib"); void main() { FtpSearch f; } If I compile it using the original names[version(origNames)], it can't find the files: I:\pgm\d\examples\recls>dmd ftpsearch.d -version=origNames d:\dmd\bin\..\..\dm\bin\link.exe ftpsearch,,,user32+kernel32/noi; OPTLINK (R) for Win32 Release 7.50B1 Copyright (C) Digital Mars 1989 - 2001 All Rights Reserved recls.D Warning 2: File Not Found recls.D recls.dm Warning 2: File Not Found recls.dm If I compile with new names (replacing the first period with an underscore and not setting a version), it works fine. So I've found two work-arounds to this issue. 1) Rename the libs to only have one period. 2) Add the .lib's to the command line rather than through pragmas. (By the way, I'm using the recls libs and source from http://recls.org/downloads.html and the wininet.lib from http://svn.dsource.org/svn/projects/bindings/trunk/lib/.) I'm using DMD v0.121 on Windows XP. -- jcc7 http://jcc_7.tripod.com/d/
Apr 17 2005