Jump to content

DC++ on Windows 98


Recommended Posts

Attention especially to LLXX, Xeno86, or other capable programmers on this forum.

Some of you may be familiar with the file-sharing protocol and application DC++. Since version 0.4033, the application was changed to provide full Unicode functionality; however, this has caused some crashes and bugs on Windows 9x systems.

Please refer to these links for more info:

http://dcpp.net/forum/viewtopic.php?t=15649

http://dcpp.net/bugzilla/show_bug.cgi?id=356

The programmers of DC++ have not been able to figure out why there are problems on Windows 9x, and how to fix those problems. There are problems such as the application crashing on opening file lists, the inner windows not having proper close/minimize/restore buttons, the menus not responding to mouse movements, garbled characters upon startup, etc.

It is most likely that the problems have to do with an incorrect reference or implementation of the Microsoft Layer for Unicode (MSLU).

I would thus like to ask some programmers in this forum whether they could look at the source code for DC++ and figure out the problematic parts. I am actually assuming that these might be pretty simple fixes. I am always available to tell you when exactly the application crashes, if it helps in figuring out what specific part in the source code the crashes relate to.

You can download the source code here:

http://prdownloads.sourceforge.net/dcplusplus/?download

I recommend downloading version 0.674, NOT the later ones, because they tried to work around it by using OpenCow instead of MSLU, but they did not implement that correctly, and it still uses MSLU anyway.

It would certainly be nice to have DC++ fully functional on Windows 98, and would be another "battle won" for Windows 98 users and this operating system.

Ivan

Link to comment
Share on other sites


Try ApexDC++ , it's a new DC client and seem to work fine on 9x.

Hmm, crashes on my machine upon opening, and so does StrongDC++.

Anyway, even if these worked, they are all based on DC++, therefore they will NOT have the issues I talked about resolved.

Link to comment
Share on other sites

The solution is simple, just use older version that doesn't use unicode.

Win9x wasn't designed for unicode anyway, it doesn't even handle unicode filenames properly.

LLXX, please rethink what you are saying. You can always say "use an older version", to any piece of software. That's not what this is about. Not to mention the newer versions have various features that the old ones don't, and some hubs now do not accept users with 0.4x versions of DC++ anymore.

The point is various applications implement MSLU correctly (including, for example, the recent VLC Media Player 0.8.5, or Microsoft's own Windows Media Player, etc.), but there are some bugs in the newer versions of DC++ that cause problems on Windows 98. These are bugs which by all means should be fixed - if someone can figure out why the problems are happening. This is why I posted the links to the source code - I was hoping one of you capable programmers could look into the issues, and perhaps figure out what needs to be changed. The developers of DC++ have pretty much given up on fixing the issues with Windows 9x, therefore the only way things are gonna get fixed is if someone else can do it!

Thanks for your consideration,

Ivan

Link to comment
Share on other sites

Ivan, I'm by no means a programmer but merely a nosy user. However, I can tell you that I recently installed StrongDC++ 2.01 on my 98SE system and it works just fine. Of course, it's not a vanilla system, but one heavily upgraded, first with the Unofficial Service Pack (an old version), then with the Kernel Update Project patch (both found in these forums), but most of all with various system files from several other operating systems, from ME to Server 2003. Maybe I've been just lucky, but whenever some application crashed on me or functioned improperly, I profiled it through Dependency Walker, noted which modules were missing functions or were not found on my system and upgraded accordingly.

Speaking of DC++ clients, unfortunately there are only a few that work correctly on my system, which means that most (if not all) of them will probably fail completely on a vanilla 9x system. The ones currently working for me are: CZDC++ 0.6.6.6 (nasty version number), DC++ 0.689, oDC 5.31 and StrongDC++ 2.01 (older versions crash).

I also tried iDC++ 2.0.1, an italian branch, which I found surprinsingly feature-rich and nice looking, but unfortunately some controls in the Options panel will not work at all (the sharing list is the most important of them). I could not get it to work properly no matter what I tried, and the posts in its forums did not yield any working solution.

All this said, I think the best thing would be running the compiled DC++ client through Dependency Walker, noting the missing modules/functions and then trying to replace them in the sources with older, Win9x existing modules/functions and maybe using VC6 or MinGW to compile the sources instead of VS2003 or newer that link to VC7 or newer runtimes that usually do not exist on Win9x systems unless they've been manually upgraded. Also the compiling options and optimizations should be carefully considered.

Link to comment
Share on other sites

The solution is simple, just use older version that doesn't use unicode.

Win9x wasn't designed for unicode anyway, it doesn't even handle unicode filenames properly.

LLXX, please rethink what you are saying. You can always say "use an older version", to any piece of software. That's not what this is about. Not to mention the newer versions have various features that the old ones don't, and some hubs now do not accept users with 0.4x versions of DC++ anymore.

The point is various applications implement MSLU correctly (including, for example, the recent VLC Media Player 0.8.5, or Microsoft's own Windows Media Player, etc.), but there are some bugs in the newer versions of DC++ that cause problems on Windows 98. These are bugs which by all means should be fixed - if someone can figure out why the problems are happening. This is why I posted the links to the source code - I was hoping one of you capable programmers could look into the issues, and perhaps figure out what needs to be changed. The developers of DC++ have pretty much given up on fixing the issues with Windows 9x, therefore the only way things are gonna get fixed is if someone else can do it!

Thanks for your consideration,

Ivan

Simple change the version number of an older version so it identifies itself as a newer version, that should work... I did the same thing with my eMule 0.46b. Still works fine.

I'm not a programmer either, more of a reverser. Maybe I'll code my own DC++ client when I have the need to, but I doubt that's going to happen.

Link to comment
Share on other sites

  • 2 weeks later...
All this said, I think the best thing would be running the compiled DC++ client through Dependency Walker, noting the missing modules/functions and then trying to replace them in the sources with older, Win9x existing modules/functions and maybe using VC6 or MinGW to compile the sources instead of VS2003 or newer that link to VC7 or newer runtimes that usually do not exist on Win9x systems unless they've been manually upgraded. Also the compiling options and optimizations should be carefully considered.

Thanks for the tips. I fear that doing some of the above might be beyond my capabilities at this point, both knowledge-wise and time-wise.

Still, I have to reiterate what I said earlier. The newer versions of DC++ are SUPPOSED to work on Windows 98, i.e. there should NOT be any missing functions. Missing functions came up when DC++ switched to Unicode, but this is exactly the purpose of the Microsoft Layer for Unicode, to enable Unicode applications to run on Win 9x.

What we are talking about here, once again, are specific bugs that exist in the source code and that could be fixed IF someone identified WHERE the problem actually occurs. I started this thread specifically with this intent in mind - seeing if someone who can at least understand how MSLU is implemented and who can at least do a basic reading of the source code might be willing to dig into it and try to figure it out. Maybe doing so is very difficult - it's beyond my ability to judge this.

Somehow I actually believe the fixes would not be anything major to code.

Edited by ivanbuto
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...