bug-libtool
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 2.2.7a: unresolved external symbol _lt_libltdlc_LTX_preloaded_symbol


From: Matthieu Nottale
Subject: Re: 2.2.7a: unresolved external symbol _lt_libltdlc_LTX_preloaded_symbols
Date: Thu, 27 Nov 2008 21:17:00 +0100
User-agent: Thunderbird 2.0.0.16 (X11/20080724)

Peter Rosin wrote:
Den 2008-11-27 19:41, skrev Ralf Wildenhues:
Hello Akim, Matthieu,

* Akim Demaille wrote on Thu, Nov 27, 2008 at 03:48:25PM CET:
Well, I'm trying to have the libtool test suite pass on this platform (ie., GNU/Linux running VC++ on top of Wine). There are a number of things that don't work cleanly, and maybe we should go step by step. I need the changes Paolo posted.

First of all, we should consider getting the pr-msvc-support branch up
to date.  With it, I assume most of your problems to vanish.  This
branch has patches to support MSVC without a wrapper.  While it was
developed for working with MinGW/MSYS as $build and $host, I suppose it
will still help your quest.

Some background here, and a bit of info to set the expectations right
regarding the pr-msvc-branch and Wine (or Cygwin for that matter).

Since there is no wrapper, there is one class of problems that is not
addressed, and that is path translation from the scripting world to
the VC++ Windows world. MSYS handles that transparently when you are
on that $build/$host, but work needs to be done for VC++ to work from
Linux/OSX/whatever with Wine (same problem on Windows with Cygwin
instead of MSYS).

I don't think Wine does such path translations anyway, but I'm not a
Wine user, so don't take my word for it...
On the contrary, wine does a great job at this.
cat testw32.cc #include <iostream>
#include <windows.h>
#include <stdexcept>
int main(int argc, const char* argv[])
{
 HANDLE h = CreateFile(argv[1], GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
 if(h == INVALID_HANDLE_VALUE)
   throw std::runtime_error("open fail");
 char c;
 DWORD count;
 if (!ReadFile(h, &c, 1, &count, 0))
   throw std::runtime_error("read fail");
 std::cerr << (int)c << std::endl;
 CloseHandle(h);
 return 0;
}
i586-mingw32msvc-g++ -o test.exe testw32.cc
./test.exe /etc/passwd 21:09:53
114



The problem is that cl.exe does not understand that an argument starting with / is a file path. Likely since / is its option marker: address@hidden * ~/ >foo.cc [20:53] address@hidden cl.exe ./foo.cc [21:10] Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

foo.cc
Microsoft (R) Incremental Linker Version 8.00.50727.42
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:foo.exe
foo.obj
LINK : fatal error LNK1561: entry point must be defined



address@hidden * cl.exe ~/foo.cc [21:10] Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 14.00.50727.762 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

cl : Command line warning D9002 : ignoring unknown option '/home/build/foo.cc'
cl : Command line error D8003 : missing source filename






reply via email to

[Prev in Thread] Current Thread [Next in Thread]