C++.rodata. _ztı9port32bit[_zt' tanımsız başvuru hatası

mrht1234

Hectopat
Katılım
3 Aralık 2020
Mesajlar
1.397
Çözümler
4
Yer
Edirne/Merkez
Daha fazla  
Cinsiyet
Erkek
Merhaba C++.rodata. _ztı9port32bit[_zt' tanımsız başvuru hatası alıyorum çözümü nedir? Konuyla ilgili hatayla ilgili resmi ve hataya sebep olan kodları paylaşacağım.
port.cpp kaynak kodu:

[CODE lang="cpp" title="port.cpp"]#include "port.h"

Port::port(uint16_t portnumber)
{
this ->portnumber = portnumber;
}

Port::~Port()
{
}

Port8Bit::port8Bit(uint16_t portnumber)
: Port(portnumber)
{
}

Port8Bit::~Port8Bit()
{
}

void Port8Bit::Write(uint8_t data)
{
__asm__ volatile("outb %0, %1" : : "a" (data), "Nd" (portnumber));
}

uint8_t Port8Bit::Read()
{
uint8_t result;
__asm__ volatile("inb %1, %0" : "=a" (result) : "Nd" (portnumber));
return result;
}

Port8BitSlow::port8BitSlow(uint16_t portnumber)
: Port8Bit(portnumber)
{
}

Port8BitSlow::~Port8BitSlow()
{
}

void Port8BitSlow::Write(uint8_t data)
{
__asm__ volatile("outb %0, %1\njmp 1f\n1: jmp 1f\n1:" : : "a" (data), "Nd" (portnumber));
}

Port16Bit::port16Bit(uint16_t portnumber)
: Port(portnumber)
{
}

Port16Bit::~Port16Bit()
{
}

void Port16Bit::Write(uint16_t data)
{
__asm__ volatile("outw %0, %1" : : "a" (data), "Nd" (portnumber));
}

uint16_t Port16Bit::Read()
{
uint16_t result;
__asm__ volatile("inw %1, %0" : "=a" (result) : "Nd" (portnumber));
return result;
}

Port32Bit::port32Bit(uint16_t portnumber)
: Port(portnumber)
{
}

Port32Bit::~Port32Bit()
{
}

void Port32Bit::Write(uint32_t data)
{
__asm__ volatile("outl %0, %1" : : "a" (data), "Nd" (portnumber));
}

uint32_t Port32Bit::Read()
{
uint16_t result;
__asm__ volatile("inl %1, %0" : "=a" (result) : "Nd" (portnumber));
return result;
}[/CODE]

port.h kaynak kodu:

[CODE lang="cpp" title="port.h"]#ifndef __PORT_H
#define __PORT_H

#include "types.h"

class Port
{
protected:
uint16_t portnumber;
Port(uint16_t portnumber);
~Port();
};

class Port8Bit : public Port
{
public:
Port8Bit(uint16_t portnumber);
~Port8Bit();
virtual void Write(uint8_t data);
virtual uint8_t Read();
};

class Port8BitSlow : public Port8Bit
{
public:
Port8BitSlow(uint16_t portnumber);
~Port8BitSlow();
virtual void Write(uint8_t data);
};

class Port16Bit : public Port
{
public:
Port16Bit(uint16_t portnumber);
~Port16Bit();
virtual void Write(uint16_t data);
virtual uint16_t Read();
};

class Port32Bit : public Port
{
public:
Port32Bit(uint16_t portnumber);
~Port32Bit();
virtual void Write(uint32_t data);
virtual uint32_t Read();
};

#endif[/CODE]
 

Dosya Ekleri

  • Port.cpp Hata.png
    Port.cpp Hata.png
    58,8 KB · Görüntüleme: 35
Bu adreste tane tane Gcc'de neyin ne olduğu verilmiş. İhtiyacın olan konuyu F3'e basıp arama yaparak bulabilirsin.

C++ runtime desteğini devre dışı bırakmak için ne yapmalıyım g++ derleyicide ben şu an make run komutunu veriyorum derlemek için make run komutunun yanına parametremi eklemeliyim yoksa bir dosya oluşturup kodmu yazmalıyım?
 
@alperkral
@Enes3078
@TerabyteForever
@Dynamics

Makefile'a Ben Makefile'a C++ Runtime Desteğini Devre Dışı Bırakmak İçin -fno-use-cxa-atexit -ffreestanding -mno-red-zone -fno-stack-protector -fno-asynchronous-unwind-tables -fno-pic Bir Kod Yazdım Fakatt Yine Aynı Hatayı Veriyor Bu Kod C++ Runtime Desteği Bu Kod Devre Dışı Bırakabilir mi? Yoksa Başka Bir Kodmu Yazmalıyım Yoksa Başka bir şey mi Yapmalıyım?
 

Technopat Haberler

Yeni konular

Geri
Yukarı