StefanP schrieb:
g++ -o TicTacToe.exe -static TicTacToe.cpp
-static-libgcc und -static-libstdc++ tun es übrigens auch. Mit -static wird der Linker versuchen,
sämtliche Bibliotheken statisch zu linken. Das ist nicht immer das, was man möchte.
Anekdote am Rande: Die fehlende DLL ist übrigens das GCC-Äquivalent zu fehlenden "msvcp*.dll"
und "msvcr*.dll"-Dateien - einem Problem dem wahrscheinlich fast jeder irgendwann schonmal begegnet ist
Je nachdem, ob du Aufrufer oder Schreiber bist:
-Wdelete-non-virtual-dtor: Warn when delete is used to destroy an instance of a class that has virtual functions and non-virtual destructor. It is unsafe to delete an instance of a derived class through a pointer to a base class if the base class does not have a virtual destructor. This warning is enabled by -Wall.
-Wnon-virtual-dtor: Warn when a class has virtual functions and an accessible non-virtual destructor itself or in an accessible polymorphic base class, in which case it is possible but unsafe to delete an instance of a derived class through a pointer to the class itself or base class. This warning is automatically enabled if -Weffc++ is specified.
Hi,
weiß jemand ob und wie ich die Aufagbenlisten von Hand leeren kann.
Bei mir hat sich da ein wenig der Bugteufel eingeschlichen und ich kann Einträge, die nicht mehr im Code vorhanden sind aber dennoch in der Liste stehen, nicht mehr entfernen, was das ganze sehr unübersichtlich macht.
raptor49 schrieb:
C++ ist doch für MS nur noch ein lästiges Anhängsel. Für Windows allein würde ich nie mit C++ coden. Und schon gar nicht mit .NET.
Dann erkläre mir mal warum C++ explizit für WinRT native Unterstützung bekommen hat.
Das ist keine Aufgabe für den Compiler, sondern für das Build-System. In CMake macht man sowas z.B. mit add_custom_target und/oder add_custom_command ,
wo dann z.B. ein selbstgeschriebenes Tool aufgerufen wird, das deine Ressourcendatei erzeugen kann und das z.B. in einem vorangegangenen Build-Schritt
kompiliert wurde (über Target-Anhängigkeiten gesteuert).
Eine kurze Suche hat diesen Artikel hier zutage gefördert, der mit nach groben Überfliegen brauchbar erscheint, falls du ein paar paar Beispiele benötigst,
wie man solche externen Tools in ein CMake-Projekt einbindet:
https://samthursfield.wordpress.com/2015/11/21/cmake-dependencies-between-targets-and-files-and-custom-commands/
Dieser Thread wurde von Moderator/in Arcoth aus dem Forum C++ (alle ISO-Standards) in das Forum Compiler- und IDE-Forum verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?
Dieses Posting wurde automatisch erzeugt.
Vorläufig vielen Dank. ich werde noch eine Weile experimentieren. Vorsichtshalber habe ich eine virtuelle Maschine mit XP installiert und dort Dev C++. Wenn 's in
Ubuntu und code: Blocks nicht geht kann ich immer ausweichen und die Programme die der Professor meines Sohnes gemacht hat nachvollziehen - oder umschreiben !
Heli.
Hallo,
ich bin gerade dabei ein PlugIn für X-Plane Flugsim zu schreiben.
Dieses kommuniziert mit "Robot operating System" und ist Teil eines größeren Projekts.
Das Plugin ist eine Art DLL mit der Endung *.xpl. Wie ihr seht, baut sich das Unterprojekt durch:
Plugin-SRC: ( Main mit dazugehöriger Header file)
drawxmain.cpp
drawxmain.h
Plugin-Class-SRC: ( Die powerClass wird als globale Klasse definiert, denn diese managt die Kommunikation ----> Singletone )
powerclass.cpp
powerclass.h
drawobjects.cpp
drawobjects.h
Ich muss das erste mal CMake nutzen und bin komplett überfordert. Hier ist mein 25. Versuch..:
Die .xpl wird gebaut und beim Start des Plugins in Xplane steht in der Log.txt:
dlerror:/opt/X-Plane/Resources/plugins/Plugin.xpl: undefined symbol: _ZTVN4Draw7Objects7CSensorE
Failed: /opt/X-Plane/Resources/plugins/Plugin.xpl. (This file is missing, not a DLL or could not be loaded due to another missing DLL.)
Weiß jmd einen Tipp oder mache ich grundsätzlich was falsch?
SYSTEM: Ubuntu 16.04 mit entsprechender g++, gcc Libraries und cmake ist 3.xx
##################################################
# States that CMake required version must be .gt. 2.6
cmake_minimum_required(VERSION 3.0.2)
set(MODULE_NAME XPlug)
message("${MODULE_NAME}")
##########################################################################
# Compiler Flags
##########################################################################
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DXPLM200=1 -DXPLM210=1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DAPL=0 -DIBM=0 -DLIN=1")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DCHECK_RESULT_USED=\"__attribute__ ((warn_unused_result))\"")
set(XPLANE_LINKER_FLAGS "-rdynamic -nodefaultlibs -undefined_warning -fPIC -fvisibility=hidden")
##########################################################################
# X-Plane SDK
##########################################################################
set(XPLANE_ROOT_DIR "/opt/X-Plane")
set(XPLANE_SDK_DIR "${XPLANE_ROOT_DIR}/SDK/CHeaders/")
set(XPLANE_PLUGIN_DIR "${XPLANE_ROOT_DIR}/Resources/plugins")
set(EXECUTABLES_PATH "${PRO_HOME}/07_Executables")
# Module headers and library
set(SRC drawxmain.cpp drawobjects.cpp powerclass.cpp)
set(HDR drawxmain.h drawobjects.h powerclass.h)
set(LIBS Mathematics EnumParser ParameterServer ) # muss hier roscpp rein?
set(DEPS ParameterServer_shared EnumParser_shared Mathematics_shared )
SET(ALL_SRC ${SRC} ${HDR})
LIST(SORT ALL_SRC)
add_library(plugin ${ALL_SRC})
include_directories(${roscpp_INCLUDE_DIRS})
include_directories(SYSTEM "${XPLANE_SDK_DIR}/XPLM/" "${XPLANE_SDK_DIR}/Widgets/" "${XPLANE_SDK_DIR}/Wrappers")
include_directories(SYSTEM ${Boost_INCLUDE_DIRS} ) # Weiß nicht ob ich es brauche
target_link_libraries(plugin ${Boost_LIBRARIES} ${LIBS} ${roscpp_LIBRARIES})
add_dependencies (plugin ${DEPS})
#link_libraries(m)
SET_TARGET_PROPERTIES(plugin PROPERTIES PREFIX "")
SET_TARGET_PROPERTIES(plugin PROPERTIES SUFFIX "")
set(PLUGIN_OUTPUT_FILENAME "PlugIn.xpl")
SET_TARGET_PROPERTIES(plugin PROPERTIES LINK_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -rdynamic -nodefaultlibs -undefined_warning -fPIC -fvisibility=hidden")
set_target_properties(plugin PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${XPLANE_PLUGIN_DIR})
set_target_properties(plugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${XPLANE_PLUGIN_DIR} )
set_target_properties(plugin PROPERTIES OUTPUT_NAME "${PLUGIN_OUTPUT_FILENAME}")
Ok. Ich habe die Antwort auf die erste Frage gefunden.
When you type the name of a program the system looks for the file in your PATH.
The system looks through these directories in the order given and if it can't find the program produces a command not found error.
Prepending the command with ./ effectively says "forget about the PATH, I want you to look only in the current directory".
Zur Zweiten: Bei xfce gibt es diesen Haken anscheinend nicht...
Die meisten Open-Source-Hoster haben auch ihre eigene Anwendung als Open Source bereitgestellt, was ja nicht selbstverständlich ist. Denn GitHub ist einer der wenigen Vertreter, die Closed Source verwenden. Wundert mich das GitHub so erfolgreich in der OSS-Community ist, obwohl sie selber der reinste ClosedSource-Laden sind.
Egal, es gibt ja auch OSS-Bugtracker die mit GIT klar kommen:
https://trac.edgewall.org/ sehr einfach und klein gehalten, sollte für dich passen
http://bloodhound.apache.org/ wird z.B. von Sourceforge und GNU Savannah verwendet
https://launchpad.net/launchpad-project von Launchpad (Canonical), hostet sich auch selbst.
https://about.gitlab.com/products/ Community Edition dürfte für dich interessant sein
Das sind so die prominenten.
Ah anscheinend hast du es auch so hinbekommen.
(Mein vorheriger post ist immernoch ein guter Tipp!)
Du musst boost locale linken.
In den Projektoptionen -> Linkeroptionen
-lboost_locale-mt (falls mt libs, sonst ohne das mt suffix)
Falls das nicht geht, musst du evtl die datei selbst raussuchen. Ich weiß nicht wo du dein boost her hast. (Selbst gebaut?) bzw musst du auch noch die linker pfade anpassen
https://www.dropbox.com/s/yemmerlg1h0w8c5/Screenshot 2017-01-03 02.54.55.png?dl=0
EDIT: ACHTUNG! In meinem Screenshot ist der debug build ausgewählt! Wenn man auf Release wechselt ist dann die Optione weg. Also immer auf das Projekt seblst klicken.
Vult schrieb:
Der Prozedureinsprungspunkt _gxx Personality_v0 wurde in der DLL libstdc++6dll nicht gefunden
Besonders für C++ gilt: Nicht sebst kompilerte DLL-Dateien und Importbibliotheken müssen exakt zu verwendetem Compiler und C++-Runtime passen. Eine DLL für Visual Studio z.B. wirst du nicht ohne weiteres mit CodeBlocks (GCC/Clang) verwenden können. Auch die Standardbibliothek (in diesem Fall offenbar libstdc++) und auch das Exception Handling-Modell (SJLJ/Dwarf/SEH/deaktivierte Exceptions) müssen übereinstimmen. Ebenso wird es oft nicht gut gehen, wenn DLL und EXE bezüglich dynamisch/statisch gelinkter Runtime nicht übereinstimmen oder aber eine andere Version verweden. Besonders libstdc++ hat in jüngerer Zeit sein ABI geändert und kann trotz selber Versionsnummer entweder mit neuer oder mit alter ABI kompiliert worden sein - DLL und EXE müssen auch hier die selben Einstellungen verwenden, sonst kann es ebenfalls zu solchen "seltsamen" Fehlermeldungen kommen.
Schau dir nochmal genau an, welche vorkompilieren DLL-Dateien und Importbibliotheken auf der SFML-Seite angeboten werden, und wähle die, die möglichst genau auf den von dir verwendeten Compiler passen.
Gruss,
Finnegan
Moin zusammen
gibt es eine Möglichkeit, den Dialog "File/New/Class" zu konfigurieren.
Ich will eigentlich dass beim Projektordner immer der Ordner des aktuell aktiven Projekts steht. Bei mir steht da immer ein übergeordneter Projektordner, aber nicht der Order des aktuellen Projekts. Das nervt immer dann, wenn man gerade besonders viele Klassen erzeugt.
Außerdem würde ich gern den Haken bei "add paths to project" loswerden. Der ist bei mir standardmäßig gesetzt und darf aber nicht da sein, weil Codeblocks in meinen Projektoptionen dann Pjade einträgt, die scheiße sind und dann im Kompiliervorgang Fehler ergeben.
Ideen?
gruß Tobi