<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Why is this &quot;unresolved?&quot;</title>
		<link>http://www.allegro.cc/forums/view/591467</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 20 May 2007 03:33:02 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><i>From graphics.cpp</i>
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="p">#include "allegro.h"</span></td></tr><tr><td class="number">2</td><td><span class="p">#include "graphics.h"</span></td></tr><tr><td class="number">3</td><td>&#160;</td></tr><tr><td class="number">4</td><td>graphicssystem gfx<span class="k2">;</span></td></tr><tr><td class="number">5</td><td>&#160;</td></tr><tr><td class="number">6</td><td><span class="c">// . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .</span></td></tr><tr><td class="number">7</td><td><span class="k1">void</span> graphicssystem::loadcharacter<span class="k2">(</span><span class="k1">int</span> whichcharacter<span class="k2">)</span></td></tr><tr><td class="number">8</td><td><span class="k2">{</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">switch</span><span class="k2">(</span>whichcharacter<span class="k2">)</span></td></tr><tr><td class="number">10</td><td>  <span class="k2">{</span></td></tr><tr><td class="number">11</td><td>    <span class="k1">case</span> UNDEAD2:</td></tr><tr><td class="number">12</td><td>      <span class="c">//  Load standing "animation"</span></td></tr><tr><td class="number">13</td><td>      undead<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.sprite <span class="k3">=</span> <a href="http://www.allegro.cc/manual/load_bitmap" target="_blank"><span class="a">load_bitmap</span></a><span class="k2">(</span><span class="s">"graphics\\32x64.bmp"</span>,undead<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.palette<span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>      undead<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.width <span class="k3">=</span> <span class="n">32</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>      undead<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.height <span class="k3">=</span> <span class="n">64</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>      undead<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>.totalframes <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    default:</td></tr><tr><td class="number">19</td><td>      <a href="http://www.allegro.cc/manual/allegro_message" target="_blank"><span class="a">allegro_message</span></a><span class="k2">(</span><span class="s">"ERROR\n\nIt seems we're trying to load a character which doesn't exist!\n\nOh dear."</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    <span class="k1">break</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>  <span class="k2">}</span></td></tr><tr><td class="number">22</td><td><span class="k2">}</span></td></tr><tr><td class="number">23</td><td>&#160;</td></tr><tr><td class="number">24</td><td>...</td></tr></tbody></table></div></div><p>

<i>From graphics.h</i>
</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td>...</td></tr><tr><td class="number">2</td><td>&#160;</td></tr><tr><td class="number">3</td><td><span class="k1">struct</span> charactersprite</td></tr><tr><td class="number">4</td><td><span class="k2">{</span></td></tr><tr><td class="number">5</td><td>  <a href="http://www.allegro.cc/manual/BITMAP" target="_blank"><span class="a">BITMAP</span></a> <span class="k3">*</span>sprite<span class="k2">;</span></td></tr><tr><td class="number">6</td><td>  <a href="http://www.allegro.cc/manual/PALETTE" target="_blank"><span class="a">PALETTE</span></a> palette<span class="k2">;</span></td></tr><tr><td class="number">7</td><td>&#160;</td></tr><tr><td class="number">8</td><td>  <span class="k1">int</span> width<span class="k2">;</span></td></tr><tr><td class="number">9</td><td>  <span class="k1">int</span> height<span class="k2">;</span></td></tr><tr><td class="number">10</td><td>  <span class="k1">int</span> totalframes<span class="k2">;</span></td></tr><tr><td class="number">11</td><td><span class="k2">}</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>&#160;</td></tr><tr><td class="number">13</td><td><span class="k1">extern</span> <span class="k1">struct</span> charactersprite undead<span class="k2">[</span><span class="n">15</span><span class="k2">]</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>&#160;</td></tr><tr><td class="number">15</td><td>...</td></tr></tbody></table></div></div><p>

<i>The above generates the following error from Visual Studio</i><br /><b>graphics.obj : error LNK2019: unresolved external symbol &quot;struct charactersprite * undead&quot; (?undead@@3PAUcharactersprite@@A) referenced in function &quot;public: void __thiscall graphicssystem::loadcharacter(int)&quot; (?loadcharacter@graphicssystem@@QAEXH@Z)
undead.exe : fatal error LNK1120: 1 unresolved externals</b></p><p>I&#39;ve also attached the entire graphics.cpp and graphics.h files as they stand right now, should anyone want to see more.</p><p>Can anyone please let me know why that error comes up?  It seems very mysterious to me, as the .h file is included and the thing is global.</p><p>Oh, and I looked up the Microsoft help for that error.  It says this code should generate that error as well, but I don&#39;t know why either.
</p><div class="source-code snippet"><div class="inner"><pre><span class="c">// LNK2019.cpp</span>
<span class="c">// LNK2019 expected</span>
<span class="k1">extern</span> <span class="k1">char</span> B<span class="k2">[</span><span class="n">100</span><span class="k2">]</span><span class="k2">;</span>   <span class="c">// B is not in avilable to the linker</span>
<span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span> <span class="k2">{</span>
   B<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <span class="s">' '</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>
(Yes, that misspelling was part of it.)  Why would B not be available to the linker?  It&#39;s right there.  I know, that&#39;s simplistic reasoning but at this point I just don&#39;t understand this.  I&#39;ve tried removing extern, I&#39;ve tried moving the declaration to the .cpp file.  All with no luck.</p><p>Thanks for any help.</p><p>Edit: Thanks X-G.  File now uploaded.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GameCreator)</author>
		<pubDate>Sun, 20 May 2007 03:02:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>
</p><div class="quote_container"><div class="title">Quote:</div><div class="quote"><p>
I&#39;ve also attached the entire graphics.cpp and graphics.h
</p></div></div><p>

No you haven&#39;t. Besides, your problem is that you haven&#39;t defined <i>undead</i> for real anywhere, just an extern declaration.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (X-G)</author>
		<pubDate>Sun, 20 May 2007 03:12:19 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Got it.  Added<br />struct charactersprite undead[15];<br />to graphics.cpp</p><p>Thanks!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (GameCreator)</author>
		<pubDate>Sun, 20 May 2007 03:33:02 +0000</pubDate>
	</item>
</rss>
