This site has been archived and made available for preservation purposes. No edits can be made.

Page 1 of 3 123 LastLast
Results 1 to 10 of 30

Thread: Compiling From Source

  1. #1

    Compiling From Source

    So, I'm attempting to build VaultMP from source so that I can potentially take a stab at either helping, or at the very least so I can try stuff out as changes are committed rather than waiting for public builds to be released.

    I snagged CodeBlocks and the MinGW 4 upgrade as per instructions at the old VaultMP google code site:
    https://code.google.com/p/vaultmp/wiki/CompilingVaultMP

    The first issue I ran into was I had to set _WIN32_WINNT=0x0501 in the global defines otherwise compiling choked in utils.cpp on GetFileSizeEx.

    After that, I got vaultmp.dll to build, but the other parts of VaultMP (master server, server, client, etc.) run into a mess of errors.
    'recursive_timed_mutex' does not name a type
    is particularly common, but the errors in general seem to my naive eye to be related to syntax differences between c++0x and the older standards. The projects tend to have these settings set, yet it's still clobbering my ability to build the projects.

    Queue

  2. #2
    Administrator
    Join Date
    Jun 2011
    Location
    Germany
    Posts
    1,057
    Blog Entries
    5
    Hi,

    sorry, the google code page is outdated

    You need GCC 4.7 for compiling (C++11 features). You can pick it up for MinGW here: https://code.google.com/p/mingw-builds/downloads/list

  3. #3
    Thanks! So I snagged the newer MinGW, which got vaultmaster compiling (and vaultmp.dll still compiles), I grabbed the boost.org libraries for vaultserver, but now I'm hitting errors with iniparser (during the final link), which I tried to get from here:
    https://github.com/Foxtacles/iniparser
    but which is giving me errors like:
    undefined reference to `iniparser_load(char const*)'

    Queue

  4. #4
    Administrator
    Join Date
    Jun 2011
    Location
    Germany
    Posts
    1,057
    Blog Entries
    5
    Please initialize the iniparser submodule in the main vaultmp repository; it points to this commit: https://github.com/Foxtacles/inipars...bfa6ce8d28c95c

    That should fix the linker errors.

    (https://www.kernel.org/pub/software/s...submodule.html)
    Last edited by foxtacles; 06-21-2012 at 01:39 PM.

  5. #5
    I'm not familiar enough with the git tools (at least yet) to have succeeded at using the git-submodule program. I can use git to download the main VaultMP repository, or the iniparser repository on its own, and I did put the iniparser files in the iniparser folder of the VaultMP source, and CodeBlocks is compiling the iniparser code into .o files, it just all fails during linking. My first guess is that function export names are getting mangled during compile; I just don't know CodeBlocks or the GNU compilers well enough to know what to fix.

    Queue

  6. #6
    Administrator
    Join Date
    Jun 2011
    Location
    Germany
    Posts
    1,057
    Blog Entries
    5
    Yep, it's because of name mangling. The git submodule points to a commit of a branch in my iniparser repository which exports the functions as C functions.

    You can follow the GitHub link I had in my last post. It is the correct commit; download it as ZIP or git clone / checkout, that will work

  7. #7
    Success! I had messed up with which iniparser branch (or whatever they're called) I had put in the VaultMP source tree. Got it all working (well, short of vaultgui, but I don't want to mess with that yet).

    Thank you for patiently working me through that.

    Edit - D'oh, forgot I'd need vaultgui.dll to be able to try the new version.

    Queue
    Last edited by Queue; 06-23-2012 at 01:51 AM.

  8. #8
    Administrator
    Join Date
    Jun 2011
    Location
    Germany
    Posts
    1,057
    Blog Entries
    5
    For vaultgui, you'll need Microsoft Visual Studio Express 2010 (at least the MSVC compiler) and the DirectX SDK files.

    However it should be no problem to change the meaning of:

    https://github.com/Foxtacles/vaultmp...ultmp.cpp#L576

    to not set DLLerror to true. Then, as long as you don't use server-side script functions to send chat messages, everything should still work fine.

  9. #9
    That's actually the first thing I tried (commenting out the vaultgui.dll loading code), but I'm getting the following error when I try and run New Vegas (through VaultMP):
    Could not enter CriticalSection object 0051E330, timeout of 5000ms reached (15CriticalSection)
    and then New Vegas crashes after I click OK. I have no idea if this is due to other vaultgui.dll code that needs to be disabled, or if it's some other problem. I'm just starting to poke around the code in earnest.

    VaultMP works (well, aside from known issues) if I use the Gary 1 binaries, for what that's worth.

    Also, I think there might be a problem with Utils::FileOnly. When I synchronize with the server, it cuts off the first character of file names, so ''The Mod Configuration Menu.esp'' becomes ''he Mod Configuration Menu.esp'' and so on.

    Edit - Yeah, I peeked inside the vaultgui suo file and saw it was VS2010. I'd prefer to avoid installing that, or I may set up a virtual machine just to host that so I don't pollute my pretty optimized Windows install with all the baggage VS2010 includes.

    Queue
    Last edited by Queue; 06-23-2012 at 10:55 AM.

  10. #10
    Administrator
    Join Date
    Jun 2011
    Location
    Germany
    Posts
    1,057
    Blog Entries
    5
    The CriticalSection error is (likely) due to me having introduced some nasty concurrency problem in one of my commits in the last 1-2 weeks. I believe I fixed it (it works fine for me), but you never know with this kind of error. Do you have the up-to-date sources from the repository?

    I've been struggling with CriticalSection errors for long times. It's extremely hard to track down that bugs (mostly, deadlocks => lock timeouts)

    Yep, Utils::FileOnly has that bug. I always forget to fix it Thanks.

    Oh, and I also have to mention that there is a bug with the EquipItem function in New Vegas.
    https://github.com/Foxtacles/vaultmp/issues/56

    So if you are using the default vaultscript, which equips the PipBoy on startup, the game might just silently "close" itself. That's the stack overflow. I wasn't able to find the cause for it yet - it's a side effect of the engine function and occurs in some other thread of the executable. The stack overflow does not occur if the player is in any in-game menu; EquipItem works fine then. In Fallout 3, this problem doesn't exist at all.
    Last edited by foxtacles; 06-23-2012 at 12:40 PM.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •