The MASM Forum Archive 2004 to 2012

Project Support Forums => The GeneSys Development System => Topic started by: PBrennick on July 17, 2006, 04:51:06 AM

Title: BETA Release
Post by: PBrennick on July 17, 2006, 04:51:06 AM
The first BETA Release, of Version 1a of the GeneSys Project is available for download from here (http://www.pbrennick.com/Vortex/GeneSys.zip).

Any comments are always welcome and will help this project to quickly mature.

Paul
Title: Re: BETA Release
Post by: japheth on July 17, 2006, 03:30:33 PM

Hello Paul,

thanks for your GeneSys project! Since I'm an "experienced" programmer this project is not intended to be used by me. But neverthelessl I found a very good idea inside: supplying .DEF files to let POLINK create import libraries. With your kind permission :wink I will steal this idea - I just added a new option to a self-written h2inc tool (h2incX) to make it write .DEF files from .H input files. Eventually I will also supply .DEF files with my "Win32Inc" project (which is targeted for "very experienced programmers" only :toothy,  it's no competitor for GeneSys).

Regards

Japheth

Title: Re: BETA Release
Post by: Vortex on July 17, 2006, 04:46:03 PM
Japheth,

Supplying def files with your project sound like a good idea. Our GeneSys package provides a lib2def tool converting import libraries to module definiton files.
Title: Re: BETA Release
Post by: PBrennick on July 17, 2006, 05:23:33 PM
japheth,
Thank you for the compliment about our project.  I am aware of your work.  In fact, I use Joe as a quick email scanner all the time.  I wonder, however, why you never bothered to add sendmail capability.  There are several working versions in assembly available that work with SMTP, but there is nothing that will work with ESMTP.

Paul
Title: Re: BETA Release
Post by: japheth on July 17, 2006, 07:13:13 PM
> Our GeneSys package provides a lib2def tool converting import libraries to module definiton files.

Thanks Vortex. I already added this new feature to my h2inc tool, so I will possibly not need lib2def. But another question: there is at least 1 library, UUID.LIB, which does not contain just import descriptors, but "real" code (the GUIDs, IIDs, CLSIDs of all the MS COM objects). How did you generate this lib?

> I wonder, however, why you never bothered to add sendmail capability.
> There are several working versions in assembly available that work with SMTP

Hi Paul. I forgot a bit about Joe after I finally could switch to DSL. But now, with each new version of Thunderbird becoming slower and taking longer to start, there will soon come the time when Joe will possibly resurrect. Adding SMTP is not on my todo list. However, the source is public domain, it doesn't depend on me.
Title: Re: BETA Release
Post by: Vortex on July 17, 2006, 07:50:04 PM
Hi Japheth,

You can check Build.bat located in the folder C:\GeneSys\def , it contains this line :

..\bin\polib /MACHINE:IX86 /DEF:uuid.def /OUT:uuid.lib

All the import libraries are created from module definition files.
Title: Re: BETA Release
Post by: PBrennick on July 18, 2006, 12:06:32 AM
Iczelion's Tutorials have been added to the Project.  For users who have already downloaded the project you can get the tutorials separately from our new server (http://x86assembly.codegurus.org/Iczelion.zip).  Just download it, create a tutorial folder under the GeneSys folder and unpack the Iczelion folder into it.  The strength of this version is the java applet that allows global searching of all the html files.

An alternate methode is to get the self-extracting version (http://x86assembly.codegurus.org/tutorials.exe) of the archive.  Download it to the \GeneSys folder, execute it and it will create the subfolders for you.

Also, I am testing a new server for hosting the Project.  The project can be downloaded from our new server (http://x86assembly.codegurus.org/GeneSys.zip).  If you have a problem with the download, please let me know.

Paul
Title: Re: BETA Release
Post by: japheth on July 18, 2006, 05:14:18 AM
Quote from: Vortex on July 17, 2006, 07:50:04 PM
Hi Japheth,

You can check Build.bat located in the folder C:\GeneSys\def , it contains this line :

..\bin\polib /MACHINE:IX86 /DEF:uuid.def /OUT:uuid.lib

All the import libraries are created from module definition files.

I see now how it is supposed to work, but it will not work this way. If I link this simple test program with your UUID.LIB:


;--- a simple LIB test

.386
.model flat, stdcall
    option casemap:none

;WIN32_LEAN_AND_MEAN equ 1
    .nolist
    .nocref
    include windows.inc
    include macros.inc
    .list
    .cref

    .const

extern IID_IUnknown:IID
   
    .code

main proc c arcg:dword, argv:ptr ptr sbyte

local hConOut:DWORD
local wszStr[40]:WORD
local szText[80]:byte

    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov hConOut, eax

    mov eax, offset IID_IUnknown
    lea ecx, wszStr
    invoke StringFromGUID2, eax, ecx, 40
    invoke wsprintf, addr szText, CStr(<"IID_IUnknown=%S",10>), addr wszStr
    push 0
    mov edx, esp
    invoke WriteConsole, hConOut, addr szText, eax, edx, 0
    pop eax
    ret

main endp

start:
    call main
    invoke ExitProcess, 0

    end start


I don't get link errors, but trying to run it makes windows complain that UUID.DLL hasn't been found - which is quite correct, this dll doesn't exist. The problem is that the UUID.LIB contained in the PSDK contains static code.

Regards

Japheth
Title: Re: BETA Release
Post by: Vortex on July 18, 2006, 07:01:28 AM
QuoteThe problem is that the UUID.LIB contained in the PSDK contains static code.

Exactly, this is the case. The import library created by Polink doesn't contain the static code.
Title: Re: BETA Release
Post by: Vortex on July 18, 2006, 07:08:13 AM
Hi Paul,

I downloaded successfully the project from the new server.
Title: Re: BETA Release
Post by: PBrennick on July 18, 2006, 07:11:55 AM
Vortex,
Thank you for testing.  I have created a project to test Japheth's problem and I found out the same thing.  Currently, I include 2 static libs in the lib folder at install time.  It looks like we will need to add a third.  I hope that is the only one ...

Paul
Title: Re: BETA Release
Post by: japheth on July 18, 2006, 07:39:36 AM
Quote from: PBrennick on July 18, 2006, 07:11:55 AM
Vortex,
I hope that is the only one ...

Paul


At least one should have a look at dxguid.lib, dinput.lib and dinput8.lib. DInput usually contains static code for the "system devices" keyboard and mouse.
Title: Re: BETA Release
Post by: Vortex on July 18, 2006, 07:59:50 AM
Japheth,

I am afraid the MS COFF file format specification doesn't provide us enough information to build import libraries mixed with static code. Do you know someone else worked on this topic?
Title: Re: BETA Release
Post by: PBrennick on July 18, 2006, 08:45:16 AM
Japheth,
Thank you for this information.  What is your opinion about unicows.lib?  Also, I created my own project for testing and Hutch's, ZCoder's, Borland's and Digital Mars versions of uuid.lib all failed.  Of the 6 that I tested, the only one that works is from Microsoft's PSDK.  Is that not very interesting?

Paul
Title: Re: BETA Release
Post by: japheth on July 18, 2006, 09:40:15 AM
Paul,

unicows.lib looks like it also contains static code. I was unable to link the test app with Borland, but I also tried with Digital Mars and that worked (it's in OMF format). The uuid.lib supplied with PellesC also works. So there are at least 3 which are working. That Hutch's uuid.lib still doesn't work is no big surprise to me, although this problem was reported soon after he released the first version of MASM32 with self-created libs.

Japheth
Title: Re: BETA Release
Post by: hutch-- on July 18, 2006, 11:09:41 AM
There is really only one solution and that is to use the original Microsoft library when it contains static code. If bandwidth was not a consideration and it was easy enough to licence, i would supply the complete SDK set of libraries but without that choice I started building the libraries which handle the API function set but not any of the COM functions.

If you need to build apps that need those libraries, the PLATFORMSDK is the only solution.
Title: Re: BETA Release
Post by: japheth on July 18, 2006, 07:31:07 PM

> There is really only one solution and that is to use the original Microsoft library when it contains static code.

One may possibly extract the GUIDs from the C header files without too much effort. Of course not "all", but for a project which is targeted for beginners the most common GUIDS of uuid.lib and dxguid.lib may suffice. The more experienced guys can easily update their libraries on their own if required, that's hardly a problem.


Title: Re: BETA Release
Post by: Vortex on July 18, 2006, 09:31:07 PM
Don't you think that this GUID stuff is over the level of a beginner?
Title: Re: BETA Release
Post by: PBrennick on July 18, 2006, 09:48:29 PM
In my modest opinion based on years of observation and programming in win32, the vast majority of the libraries are never used.  There may be 15 libs that suffice to do all jobs.  This is only an opinion and it will never cause me to restrict what is available because every now and then I stumble over a piece of code that uses an unusual lib.

Paul
Title: Re: BETA Release
Post by: japheth on July 18, 2006, 10:13:06 PM

Some of the GUIDs are used for directx, these should exist in the libs. The more sophisticated COM stuff is not required of course.