Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

01.12.2005, 17:13

MASM und C++

Hallo Leute,
weiß einer von euch, wie ich in MASM programmierte static libraries (LIB) in C++ (Visual Studio 2003) einbinden kann?
Ich arbeite mit Easy Code und ein Build meines Codes funzt einwandfrei. Jedoch habe ich jetzt ein Problem, dass ich ja noch eine Header-Datei brauche, die ich in C++ includen muss. Die Lib zu linken klappt ohne Probleme.
Danke im voraus.
- Tamer.

__stdcall*

Treue Seele

Beiträge: 101

Wohnort: Dauchingen

Beruf: Schüler

  • Private Nachricht senden

2

01.12.2005, 17:25

Hi,

meinst du das du die Librarys in den C++ Quellcode einbinden willst?

C-/C++-Quelltext

1
#pragma comment(lib, "DeineLib.lib")


oder?

__stdcall*

Anonymous

unregistriert

3

02.12.2005, 10:29

Also die Lib lässt sich ja problemlos einbinden (habs auch mit #pragma comment gemacht), allerdings bekomme ich trotzdem eine Fehlermeldung, dass es ein unaufgelöstet externes Symbol gibt.
Ich habe mir meine eigene Header-Datei geschrieben:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#if _MSC_VER > 1000
#pragma once
#endif

#ifndef __MYFUNCTION_H__
#define __MYFUNCTION_H__

#ifdef  __cplusplus
extern "C" {
#endif

__int32 __cdecl myFunction(__int32);

#ifdef  __cplusplus
}
#endif

#endif // __MYFUNCTION_H__

Die Assembler-Datei sieht so aus:

Quellcode

1
2
3
4
5
6
7
8
9
myFunction proto x: sdword

.code

myFunction proc x: sdword
    mov     eax, x
    mul     eax
    ret
myFunction endp

Testweise habe ich einfach mal eine einfache Funktion genommen.

Die Header-Datei habe ich dann in mein C++-Projekt inkludiert. Aus der Assembler-Datei habe ich erfolgreich die Bib erzeugt und auch ins Projekt eingebunden, aber irgendwie rafft der Linker nicht, dass der Prototyp der Header-Datei die Funktion aus der Bib repräsentiert.

Die Einstellungen des Assemblers sind: Prozessor 686p, Alignment 4
Compiler-Options: /nologo /c /coff /Cp /Zp4 /Zi /Zd
Library-Options: /nologo /subsystem:windows /machine:ix86

Hat da jemand von euch erfahrung mit und kann mir sagen, was ich noch einstellen oder berücksichtigen muss? Kann ich vielleicht Assembler-Code (ich meine keinen Inline-Assembler, sondern asm-Dateien) in VS2003 direkt einbinden und mit kompilieren?
vielen Dank!
Tamer.

Steven77

Alter Hase

Beiträge: 515

Wohnort: Münster - Gievenbeach

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

02.12.2005, 15:47

Moin.
Dasselbe Problem hatte ich auch mal.
Ich schreibe meine Assembler-Funktionen jetzt immer direkt in VS. Seit der 2003er-Version ist dort nämlich zufälligerweise MASM integriert. ;) Geil.
Kuck Dir mal diesen Link an: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcsample/html/vcsammasmeuclidstep2.asp
Der sollte Dir weiterhelfen. Ist eigentlich 'ne ganz einfache Sache. Du musst nur für Deine asm-Dateien 'nen eigenen benutzerdefinierten Build-Schritt angeben und für die Funktionen -- natürlich -- Prototypen deklarieren.
Ich hoffe, ich bzw. der Link konnte Dir helfen...

Anonymous

unregistriert

5

03.12.2005, 18:03

yo vielen dank... der link hat mir geholfen, echt genial! Danke!!

Werbeanzeige