Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com From: "Dave Korn" To: Subject: RE: Problem with DLLs and processes Date: Tue, 27 Jan 2004 11:47:07 -0000 MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit In-Reply-To: Message-ID: X-OriginalArrivalTime: 27 Jan 2004 11:47:07.0328 (UTC) FILETIME=[4A57FC00:01C3E4CB] > -----Original Message----- > From: cygwin-owner On Behalf Of Przemyslaw Sliwa > I have a question regarding the dynamically linked libraries > in Cygwin. > When I compile my program under cygwin it uses the dlls. And > then during the runtime it loads all the functions from the dll. > A similar story we have under Linux when one uses the .lo or > .so files. However I want to use the compiles program on > another machine which does not have the cygwin suite. Under > Linux I just specify the option -STATIC and then the program > contains all the data needed by the program. I can take it on > another machine, which does not have the library and run it. > I suppose under cygwin I can do the same, but nowhere in the > docs it is written how. > > Could someone tell me how to compile a program so that it > contains all the functions needed by it in the exe file??? Ideally, you'd simply build the cygwin dll from source as a static link library and add it to your exe. Unfortunately that turns out not to be possible because of various internal design features of cygwin. There are also licensing implications: http://cygwin.com/faq/faq_4.html#SEC98 I don't know if there's any way to statically link a .dll into a .exe in general. However, you can simply distribute a copy of cygwin1.dll with your exe. This has a slight danger, that the version with your exe might clash with an existing version of cygwin dll already on the computer. To avoid this, you can install your exe and the cygwin dll into a directory of their own. Then you create a file in that directory that has the exact same name as your exe with ".local" appended. This means that when your .exe runs, it will look in the same directory for its dlls before it looks in the windows system dir. That way, your exe gets the version of the dll it expects, but none of the existing software on the machine you install will interact with it. Google for "side-by-side DLLs" if you want to know more. Alternatively, you can include the dll as a binary resource and find a way to extract it at runtime. Here's an example: http://www.codeguru.com/dll/cSelf.shtml > Can I use my own dlls written in Visual Studio or Borland C++ > with the programs compiled under cygwin? Can anyone tell me how ???? LoadLibrary/GetProcAddress, or link with the .dll's export library, just the same as usual. However you'd better make sure it doesn't use any C runtime functions, as msvcrt and cygwin clash. It might work if you build your dll statically linked against the msvc runtime libs and it doesn't do anything too tricky. > The next question is regarding the priorities of the > processes. Under Linux I can set priorities of the process so > that they use less CPU power. Is it possible to do this in > cygwin and if yes how???? Using the nice command, exactly the same way. Read the man / info page. Or you can use the windoze task manager. > The last problem is with the NOHUP command. when I type > > MYPROG.exe > info.txt &nohup > > everything works fine, but when I leave the console (bash) > the process is being killed automatically. Does anyone know > how to quit console (bash) and keep the process running??? That's not how you use nohup. Read the man / info page. To sum up very quickly: you want "nohup MYPROG.exe > info.txt &" cheers, DaveK -- Can't think of a witty .sigline today.... -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/