Dll erstellen

05/07/2012 19:44 .Verkauf´#1
Hallo,

könnte mir jemand diese 2 Dateien zu einer DLL zusammenfügen?
Meine Testversion von Visual Sutdio 2008 & 2010 Express ist abgelaufen.
Die zwei Dateien sind nicht von mir!



CTitlemain.cpp:
PHP Code:
#include "StdAfx.h"
#include "CTitleMain.h"
CTitleMain::MultiByteToWideChar_Detour_Type CTitleMain::MultiByteToWideChar_Orig;

CTitleMain::myXAttFType CTitleMain::myXAttForig;
char CTitleMain::CurrPlayerName[50];
char CTitleMain::CurrPlayerName1[50];
list<
CTitleMain::PlayerTitle>* CTitleMain::TitleList
CTitleMain.h
PHP Code:
#include "StdAfx.h"
#pragma once

#define GuildFlag_Unknown -1
#define GuildFlag_1 1
#define GuildFlag_0 0

using namespace std;

class 
CTitleMain
{
private:
    
typedef void (__fastcall myXAttFType)(int thispint a2char vid, const char *lvltextint a5);
    
typedef int  (__stdcall MultiByteToWideChar_Detour_Type)(UINT CodePageDWORD dwFlagsLPCSTR lpMultiByteStrint cbMultiByteLPWSTR lpWideCharStrint cchWideChar);

    static 
MultiByteToWideChar_Detour_Type MultiByteToWideChar_Orig;

    static 
myXAttFType myXAttForig;
    static 
char CurrPlayerName[50];
    static 
char CurrPlayerName1[50];

    

    
typedef struct PlayerTitle
    
{
        
string PlayerName;
        
string TitleName;
        
unsigned char GuildValue;
        
unsigned char ShowTitle;
    };

    static list<
PlayerTitle>* TitleList;

    static 
int __stdcall MultiByteToWideChar_Detoured (UINT CodePageDWORD dwFlagsLPCSTR lpMultiByteStrint cbMultiByteLPWSTR lpWideCharStrint cchWideChar)
    {
        if (
strlen(lpMultiByteStr) < 50)
        {
            
strncpy(CurrPlayerName1,CurrPlayerName,49);
            
strncpy(CurrPlayerName,lpMultiByteStr,49);

            
CurrPlayerName1[50] = 0;
            
CurrPlayerName[50] = 0;
        }


        
//if (strcmp (lpMultiByteStr,"xSomnusx1000") == 0)
        //    return MultiByteToWideChar_Orig(CodePage,dwFlags,"xSumnusX1000",cbMultiByte,lpWideCharStr,cchWideChar);

        
return MultiByteToWideChar_Orig(CodePage,dwFlags,lpMultiByteStr,cbMultiByte,lpWideCharStr,cchWideChar);
    }


    static 
void __fastcall myXAttF(int thispint a2char vid, const char *lvltextint a5)
    {
#if MPATCH_DEBUG
        //printf("call: %s ; %s \n",CurrPlayerName,CurrPlayerName1);
#endif
        
list<PlayerTitle>::iterator it;
        for (
it TitleList->begin(); it != TitleList->end();it++)
        {
            if (
it->GuildValue != 0)
                if (
it->PlayerName.compare(CurrPlayerName) == 0)
                    return 
MyMethod(itlvltextthispa2vida5);

            if (
it->GuildValue != 1)
                if (
it->PlayerName.compare(CurrPlayerName1) == 0)
                        return 
MyMethod(itlvltextthispa2vida5);

        }

        
////0B9C07B9
        
myXAttForig(thisp,a2,vid,lvltext,a5); return;
    }

    static 
void __fastcall MyMethod( list<PlayerTitle>::iterator it, const char lvltextint thispint a2char vidint a5 
    {
        
char buf[50];
        
sprintf(buf"%s (%s)",it->TitleName.c_str(),lvltext);
        
myXAttForig(thisp,a2,vid,(const char*)&buf,a5); return;
    }

public:
    static 
void SetTitle(string pPlayerNamestring pTitleName)
    {
        list<
PlayerTitle>::iterator it;

        for (
it TitleList->begin(); it != TitleList->end(); it++)
        {
            if (
it->PlayerName.compare(pPlayerName) == 0)
            {
                
it->TitleName pTitleName;
                
it->GuildValue GuildFlag_Unknown;
                return;
            }
        }

        
PlayerTitle title;
        
title.PlayerName pPlayerName;
        
title.TitleName pTitleName;
        
TitleList->push_back(title);

    }

    static 
void Init()
    {
        if (
myXAttForig == NULL)
            
myXAttForig reinterpret_cast<myXAttFType>(DetourFunction((PBYTE0x0048C810,(PBYTE)&myXAttF));

        if (
MultiByteToWideChar_Orig == NULL)
            
MultiByteToWideChar_Orig reinterpret_cast<MultiByteToWideChar_Detour_Type>(DetourFunction((PBYTE)&MultiByteToWideChar,(PBYTE)&MultiByteToWideChar_Detoured));

        if (
TitleList == NULL)
            
TitleList = new list<PlayerTitle>;

    }
}; 
Kann mir sonst jemand ein anderes Programm verraten ?
05/07/2012 19:55 MrSm!th#2
Die Express Versionen lassen sich kostenlos registrieren.
05/07/2012 19:56 .Verkauf´#3
Quote:
Originally Posted by MrSm!th View Post
Die Express Versionen lassen sich kostenlos registrieren.
Uh, danke werde ich gleich ausprobieren :D
Wusste ich nicht ;)

Jetzt bleibt nur das Problem, dass ich nicht weiß was ich mit beiden Dateien machen muss, da ich erst seit kurzem mit programmieren angefangen bin & C++ meine erste sprache ist die ich erlerne.
05/08/2012 08:34 Tyrar#4
kannst die dateien natürlich behalten wenn du willst, aber lern erstmal die sprache :)
und mit möglichst nicht os bedingten api funktionen arbeiten! (wobei ich sehe dass du mfc verwenden willst)

wenn du die sprache drauf hast und den code verstehst, kannste dir das nochmal anschauen ;)
05/08/2012 13:56 .Verkauf´#5
Er zeigt mir aber nicht definierbare Bezeichner usw an...
& ich weiß nicht was genau da falsch ist :O

Diese werden rot unterstrichen: string, bei using namespace std das std, list, TitleList, <PlayeTitle>, iterator & printf.
Ich versteh nicht recht warum die rot unterstrichen ist?
Müssten doch alle funktionieren.
05/08/2012 14:23 Tyrar#6
haste evtl nen c++/cli projekt erstellt?
ich bin mir ziemlich sicher, dass bei win32 c++ keine fehler unterstrichen werden
05/08/2012 15:13 Dr. Coxxy#7
Quote:
Originally Posted by HeavyHacker View Post
haste evtl nen c++/cli projekt erstellt?
ich bin mir ziemlich sicher, dass bei win32 c++ keine fehler unterstrichen werden
doch, sicher werden sie in vs.

kompilieren und die fehler von oben nach unten fixen, wenn dus nicht schaffst, googlen/hier posten.
05/08/2012 20:51 MrSm!th#8
Methoden im Header implementieren...ich fass es nicht...

@Heavy: Da wird nirgendwo die MFC verwendet.

Wie schon gesagt wurde, erst lernen, dann sowas Programmieren.