<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[undefined reference to]]></title><description><![CDATA[<p>Wieso bekomme ich folgender Fehler ?</p>
<pre><code>undefined reference to `twi_writeTo(unsigned char, unsigned char*, unsigned char, unsigned char, unsigned char)'
</code></pre>
<pre><code>#include &lt;Wire.h&gt;

#include &lt;utility/twi.h&gt;

#include &lt;HardwareSerial.h&gt;

unsigned char i2cAddress = 0x48;

static void writeRegister2(uint16_t value) {
	unsigned char buffer[3];
	buffer[0] = 1;
	buffer[1] = value &gt;&gt; 8;
	buffer[2] = value &amp; 0xFF;
	twi_writeTo(i2cAddress, buffer, 3, 1, true);
}

static void writeRegister(uint16_t value) {
	Wire.beginTransmission(i2cAddress);
	Wire.write(01);
	Wire.write((uint8_t) (value &gt;&gt; 8));
	Wire.write((uint8_t) (value &amp; 0xFF));
	Wire.endTransmission();
}
</code></pre>
<p>twi_writeTo findet der Compiler, aber wieso motzt er ?<br />
Wen es es nicht finden würde, würde folgender Fehler kommen:</p>
<pre><code>was not declared in this scope
</code></pre>
<p>twi.h ist im Ordner utility, welcher sich am gleichen Ort befindet wie Wire.h</p>
<p>Komischerweise werden aber die Wire.??? Befehle anstandslos kompiliert.<br />
Die twi Befehle werden auch inerhalb von Wire.cpp aufgerufen, ab dort gehen sie.</p>
<p>Weis jemand einen Rat.</p>
<p>Übrigens handelt es sich um ein Arduino Scetch.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/338598/undefined-reference-to</link><generator>RSS for Node</generator><lastBuildDate>Mon, 13 Apr 2026 10:15:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/338598.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 26 Jun 2016 16:45:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 16:47:43 GMT]]></title><description><![CDATA[<p>Wieso bekomme ich folgender Fehler ?</p>
<pre><code>undefined reference to `twi_writeTo(unsigned char, unsigned char*, unsigned char, unsigned char, unsigned char)'
</code></pre>
<pre><code>#include &lt;Wire.h&gt;

#include &lt;utility/twi.h&gt;

#include &lt;HardwareSerial.h&gt;

unsigned char i2cAddress = 0x48;

static void writeRegister2(uint16_t value) {
	unsigned char buffer[3];
	buffer[0] = 1;
	buffer[1] = value &gt;&gt; 8;
	buffer[2] = value &amp; 0xFF;
	twi_writeTo(i2cAddress, buffer, 3, 1, true);
}

static void writeRegister(uint16_t value) {
	Wire.beginTransmission(i2cAddress);
	Wire.write(01);
	Wire.write((uint8_t) (value &gt;&gt; 8));
	Wire.write((uint8_t) (value &amp; 0xFF));
	Wire.endTransmission();
}
</code></pre>
<p>twi_writeTo findet der Compiler, aber wieso motzt er ?<br />
Wen es es nicht finden würde, würde folgender Fehler kommen:</p>
<pre><code>was not declared in this scope
</code></pre>
<p>twi.h ist im Ordner utility, welcher sich am gleichen Ort befindet wie Wire.h</p>
<p>Komischerweise werden aber die Wire.??? Befehle anstandslos kompiliert.<br />
Die twi Befehle werden auch inerhalb von Wire.cpp aufgerufen, ab dort gehen sie.</p>
<p>Weis jemand einen Rat.</p>
<p>Übrigens handelt es sich um ein Arduino Scetch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500214</guid><dc:creator><![CDATA[Mathuas]]></dc:creator><pubDate>Sun, 26 Jun 2016 16:47:43 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 16:52:04 GMT]]></title><description><![CDATA[<p>Das ist ein Linkerfehler, der Compiler findet deinen Code in Ordnung. Du musst die Bibliothek, in der die Funktion zur Verfügung gestellt wird, beim Linken mit hinzufügen. Eine Headerdatei ist keine Bibliothek! Das steht nur drin, wie die Funktion aussieht, damit der Compiler passenden Aufrufcode erzeugen kann und die Richtigkeit deines Programms prüfen kann. Daher beschwert sich hier auch der Compiler nicht (er hat schließlich alles, was er braucht), sondern der Linker, der dann wirklich den Maschinencode der Funktion ins Programm einfügen möchte und diesen nicht finden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500217</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sun, 26 Jun 2016 16:52:04 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 16:52:31 GMT]]></title><description><![CDATA[<p>Mathuas schrieb:</p>
<blockquote>
<p>twi_writeTo findet der Compiler</p>
</blockquote>
<p>Auch der Linker? Hört sich nach dem Linker an - heißt, er findet das Symbol nicht und zeigt das auch an.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500218</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500218</guid><dc:creator><![CDATA[linker]]></dc:creator><pubDate>Sun, 26 Jun 2016 16:52:31 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 17:10:15 GMT]]></title><description><![CDATA[<p>Die cpp-Datei befindet sich im gleichen Order wie die h-Datei.<br />
Wieso findet dann der Compiler die Daten und der Linker nicht ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500222</guid><dc:creator><![CDATA[Mathuas]]></dc:creator><pubDate>Sun, 26 Jun 2016 17:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 17:24:46 GMT]]></title><description><![CDATA[<p>Der Compiler findet nur h-Datei, weil du es ihm mit dem #include mitgeteilt hast.</p>
<p>Das er die cpp-Datei auch übersetzen soll, musst du ihm auch noch sagen.</p>
<p>Bzw. musst du alle nötigen cpp-Dateien und Bibliotheken zum Projekt/makefile hinzufügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500226</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500226</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Sun, 26 Jun 2016 17:24:46 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 18:44:07 GMT]]></title><description><![CDATA[<blockquote>
<p>Bzw. musst du alle nötigen cpp-Dateien und Bibliotheken zum Projekt/makefile hinzufügen.</p>
</blockquote>
<p>Wen ich die makefile angucke, ist dort ein Pfad auf utility vorhanden.</p>
<pre><code>...
# All of the sources participating in the build are defined here
-include sources.mk
-include subdir.mk
-include libraries/Wire/src/utility/subdir.mk
-include libraries/Wire/src/subdir.mk
-include libraries/Adafruit_ADS1X15/subdir.mk
-include core/core/subdir.mk
-include objects.mk
...
</code></pre>
<p>Innerhalb der mk-Datei hat es ein Pfad auf die twi.c</p>
<pre><code>C_SRCS += \
/home/tux/Programme/sloeber/arduinoPlugin/packages/arduino/hardware/avr/1.6.11/libraries/Wire/src/utility/twi.c
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2500228</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500228</guid><dc:creator><![CDATA[Mathuas]]></dc:creator><pubDate>Sun, 26 Jun 2016 18:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Sun, 26 Jun 2016 19:01:37 GMT]]></title><description><![CDATA[<p>twi.c?<br />
Enthält twi.h denn ein extern &quot;C&quot; ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500230</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500230</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Sun, 26 Jun 2016 19:01:37 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Mon, 27 Jun 2016 15:04:21 GMT]]></title><description><![CDATA[<p>Wieso erkennt der Compiler die Zusammenhänge, und der Linker ist zu doof dazu.<br />
Laufen die beiden etwa nicht synchron ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500279</guid><dc:creator><![CDATA[Mathuas]]></dc:creator><pubDate>Mon, 27 Jun 2016 15:04:21 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Mon, 27 Jun 2016 15:57:59 GMT]]></title><description><![CDATA[<p>Du hast jetzt irgendwie kein wirkliches Interesse, dieses Problem zu lösen, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500283</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500283</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 27 Jun 2016 15:57:59 GMT</pubDate></item><item><title><![CDATA[Reply to undefined reference to on Mon, 27 Jun 2016 16:18:46 GMT]]></title><description><![CDATA[<p>Mathuas schrieb:</p>
<blockquote>
<p>Wieso erkennt der Compiler die Zusammenhänge, und der Linker ist zu doof dazu.<br />
Laufen die beiden etwa nicht synchron ?</p>
</blockquote>
<p>Das sind zwei getrennte Programme.</p>
<p>Jede cpp-Datei wird für sich getrennt compiliert.<br />
Die Informationen über anderen Code befindet sich in den Header (.h) Dateien.<br />
Da diese mit <code>#include</code> eingebunden werden, sind sie quasi Teil von der cpp-Datei.</p>
<p>Am Ende müssen noch alle übersetzten Dateien zu einem ausführbaren Programm gebunden werden.<br />
Das macht der Linker.<br />
Dafür muss er aber wissen, welche Dateien das sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2500286</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2500286</guid><dc:creator><![CDATA[DirkB]]></dc:creator><pubDate>Mon, 27 Jun 2016 16:18:46 GMT</pubDate></item></channel></rss>