Raised This Month: $ Target: $400
 0% 

Compiling Extensions


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
Gun koenig
Junior Member
Join Date: Aug 2012
Old 01-03-2014 , 15:59   Compiling Extensions
Reply With Quote #1

Hey, so I'm relatively new to c++ and sourcemod extension. My goal was to create a simple detour, what i had achieved. It does compile fine no errors no warnings but as soon as I try to load the compiled binary it gives me this error:
Code:
[SM] Extension GAExtension.ext.so failed to load:  /home/tf2server/tf/addons/sourcemod/extensions/GAExtension.ext.so:  undefined symbol: Msg
and i have no clue how to fix that

CPP:
PHP Code:
#include "extension.h" 
 
CDetour *gamemodeUsesUpgradesDetour NULL
 
IGameConfig *g_pGameConf NULL
 
DETOUR_DECL_MEMBER0(GamemodeUsesUpgradesbool

    return 
true

 
bool GAEXT::SDK_OnLoad(char *errorsize_t maxlengthbool late

    
char conf_error[255] = ""
    if (!
gameconfs->LoadGameConfigFile("ga-tf2.games", &g_pGameConfconf_errorsizeof(conf_error))) 
    { 
        if (
conf_error[0]) 
        { 
            
g_pSM->Format(errormaxlength"Could not read ga-tf2.games.txt: %s"conf_error); 
        } 
        return 
false
    } 
 
    
CDetourManager::Init(g_pSM->GetScriptingEngine(), g_pGameConf); 
 
    
gamemodeUsesUpgradesDetour DETOUR_CREATE_MEMBER(GamemodeUsesUpgrades"GamemodeUsesUpgrades"); 
 
    if (
gamemodeUsesUpgradesDetour != NULL
    { 
        
gamemodeUsesUpgradesDetour->EnableDetour(); 
        return 
true
    } 
 
    
g_pSM->LogError(myself"GamemodeUsesUpgrades detour could not be initialized"); 
 
    return 
false

 
void GAEXT::SDK_OnUnload() 

    if (
gamemodeUsesUpgradesDetour != NULL
    { 
        
gamemodeUsesUpgradesDetour->Destroy(); 
        
gamemodeUsesUpgradesDetour NULL
    } 

 
/** 
 * @file extension.cpp 
 * @brief Implement extension code here. 
 */ 
 
GAEXT g_GarmeaExtension;        /**< Global singleton for extension's main interface */ 
 
SMEXT_LINK(&g_GarmeaExtension); 
Header:
PHP Code:
#ifndef _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_ 
#define _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_ 
 
/** 
 * @file extension.h 
 * @brief Sample extension code header. 
 */ 
 
#include "smsdk_ext.h"
#include "CDetour/detours.h" 
 
/** 
 * @brief Sample implementation of the SDK Extension. 
 * Note: Uncomment one of the pre-defined virtual functions in order to use it. 
 */ 
class GAEXT : public SDKExtension 

public: 
    
/** 
     * @brief This is called after the initial loading sequence has been processed. 
     * 
     * @param error        Error message buffer. 
     * @param maxlength    Size of error message buffer. 
     * @param late        Whether or not the module was loaded after map load. 
     * @return            True to succeed loading, false to fail. 
     */ 
    
virtual bool SDK_OnLoad(char *errorsize_t maxlengthbool late); 
     
    
/** 
     * @brief This is called right before the extension is unloaded. 
     */ 
    
virtual void SDK_OnUnload(); 
 
    
/** 
     * @brief This is called once all known extensions have been loaded. 
     * Note: It is is a good idea to add natives here, if any are provided. 
     */ 
    //virtual void SDK_OnAllLoaded(); 
 
    /** 
     * @brief Called when the pause state is changed. 
     */ 
    //virtual void SDK_OnPauseChange(bool paused); 
 
    /** 
     * @brief this is called when Core wants to know if your extension is working. 
     * 
     * @param error        Error message buffer. 
     * @param maxlength    Size of error message buffer. 
     * @return            True if working, false otherwise. 
     */ 
    //virtual bool QueryRunning(char *error, size_t maxlength); 
public: 
#if defined SMEXT_CONF_METAMOD 
    /** 
     * @brief Called when Metamod is attached, before the extension version is called. 
     * 
     * @param error            Error buffer. 
     * @param maxlength        Maximum size of error buffer. 
     * @param late            Whether or not Metamod considers this a late load. 
     * @return                True to succeed, false to fail. 
     */ 
    //virtual bool SDK_OnMetamodLoad(ISmmAPI *ismm, char *error, size_t maxlength, bool late); 
 
    /** 
     * @brief Called when Metamod is detaching, after the extension version is called. 
     * NOTE: By default this is blocked unless sent from SourceMod. 
     * 
     * @param error            Error buffer. 
     * @param maxlength        Maximum size of error buffer. 
     * @return                True to succeed, false to fail. 
     */ 
    //virtual bool SDK_OnMetamodUnload(char *error, size_t maxlength); 
 
    /** 
     * @brief Called when Metamod's pause state is changing. 
     * NOTE: By default this is blocked unless sent from SourceMod. 
     * 
     * @param paused        Pause state being set. 
     * @param error            Error buffer. 
     * @param maxlength        Maximum size of error buffer. 
     * @return                True to succeed, false to fail. 
     */ 
    //virtual bool SDK_OnMetamodPauseChange(bool paused, char *error, size_t maxlength); 
#endif 
}; 
 
#endif // _INCLUDE_SOURCEMOD_EXTENSION_PROPER_H_ 
The makefile I'm using is from here , CDetour and asm is from here

Thanks in advance
Gun koenig is offline
asherkin
SourceMod Developer
Join Date: Aug 2009
Location: OnGameFrame()
Old 01-03-2014 , 16:02   Re: Compiling Extensions
Reply With Quote #2

You aren't linking against tier0.
__________________
asherkin is offline
Gun koenig
Junior Member
Join Date: Aug 2012
Old 01-04-2014 , 13:25   Re: Compiling Extensions
Reply With Quote #3

Thank you very much asherkin, loads fine now
Gun koenig is offline
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 12:56.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode