<?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[dll (statisch) import mehrere projekte]]></title><description><![CDATA[<p>Schönen Abend,</p>
<p>hab mal wieder ein Problem, diesmal versuchte ich eine DLL zu &quot;bauen&quot;.<br />
Ich will eine Variable des Datentyps int in der DLL deklarieren und sie soll in allen Projekten, die zu der Projektgruppe gehören verfügbar sein.<br />
In die Datei<br />
dll.cpp<br />
habe ich</p>
<pre><code class="language-cpp">__declspec(dllexport)int f;
</code></pre>
<p>geschrieben.</p>
<p>begruessung.h (hier wird die variable gebraucht):</p>
<pre><code class="language-cpp">__declspec(dllimport) int f;
</code></pre>
<p>und in die<br />
main.h habe ich den gleichen Aufruf noch einmal gemacht.<br />
Mir ist klar, dass es falsch ist, aber mir ist nicht klar, wie ich es richtigstelle.</p>
<p>Kurz zu dem &quot;Projekt&quot;.<br />
In der begruessung.h wird eine Variable ausgewählt (aus einer ComboBox) und soll dann in der main.cpp verfügbar sein, weil sie dort wieder benötigt wird.<br />
Das Formular &quot;Main&quot; wird nach dem Formular &quot;Begruessung&quot; aufgerufen und &quot;Begruessung&quot; wird auch wieder geschlossen. Also die Variable muss eben auch verfügbar sein wenn das Formular &quot;Begruessung&quot; geschlossen ist und genau das ist das Problem.</p>
<p>Bin für jegliche Hilfe dankbar.</p>
<p>Grüße</p>
<p>Matthi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/78249/dll-statisch-import-mehrere-projekte</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 15:31:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/78249.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 29 Jun 2004 17:15:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Tue, 29 Jun 2004 17:15:30 GMT]]></title><description><![CDATA[<p>Schönen Abend,</p>
<p>hab mal wieder ein Problem, diesmal versuchte ich eine DLL zu &quot;bauen&quot;.<br />
Ich will eine Variable des Datentyps int in der DLL deklarieren und sie soll in allen Projekten, die zu der Projektgruppe gehören verfügbar sein.<br />
In die Datei<br />
dll.cpp<br />
habe ich</p>
<pre><code class="language-cpp">__declspec(dllexport)int f;
</code></pre>
<p>geschrieben.</p>
<p>begruessung.h (hier wird die variable gebraucht):</p>
<pre><code class="language-cpp">__declspec(dllimport) int f;
</code></pre>
<p>und in die<br />
main.h habe ich den gleichen Aufruf noch einmal gemacht.<br />
Mir ist klar, dass es falsch ist, aber mir ist nicht klar, wie ich es richtigstelle.</p>
<p>Kurz zu dem &quot;Projekt&quot;.<br />
In der begruessung.h wird eine Variable ausgewählt (aus einer ComboBox) und soll dann in der main.cpp verfügbar sein, weil sie dort wieder benötigt wird.<br />
Das Formular &quot;Main&quot; wird nach dem Formular &quot;Begruessung&quot; aufgerufen und &quot;Begruessung&quot; wird auch wieder geschlossen. Also die Variable muss eben auch verfügbar sein wenn das Formular &quot;Begruessung&quot; geschlossen ist und genau das ist das Problem.</p>
<p>Bin für jegliche Hilfe dankbar.</p>
<p>Grüße</p>
<p>Matthi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/549944</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/549944</guid><dc:creator><![CDATA[hagbard_]]></dc:creator><pubDate>Tue, 29 Jun 2004 17:15:30 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Wed, 30 Jun 2004 05:18:27 GMT]]></title><description><![CDATA[<p>Hi Matthi,</p>
<p>über eine DLL sollte das funktionieren, wenn Du eine Funktion verwendest, mit der Du die Variable schreibst und liest.</p>
<p>Aber Du brauchst diesen Umweg gar nicht zu machen. Includiere 'main' in 'begruessung' und definiere die Variable in 'main' als public. Dann kannst Du aus 'begruessung' die Variable direkt in 'main' setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550107</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Wed, 30 Jun 2004 05:18:27 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Wed, 30 Jun 2004 12:01:35 GMT]]></title><description><![CDATA[<p>Ich habe den Verdacht, er möchte die DLL dazu benutzen, Daten zwischen separaten Anwendungen auszutauschen. D.h. mit Programm A einer Variable in der DLL einen Wert zuweisen und mit Programm B den Wert der Variablen aus der DLL auslesen.<br />
Ich habe nicht genug Ahnung von DLLs um das definitiv zu beantworten, denke aber, das das nicht möglich ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550289</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 30 Jun 2004 12:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Wed, 30 Jun 2004 15:45:18 GMT]]></title><description><![CDATA[<p>es ist genauso wie jansen es sagte ... welche möglichkeiten gibts denn sonst dafür?<br />
mir würde auf die schnelle nur einfallen, das ganze in eine datei zu schreiben.<br />
gibt es noch eine andere möglichkeit?</p>
<p>vielen dank, und grüße</p>
<p>matthi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550418</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550418</guid><dc:creator><![CDATA[hagbard__]]></dc:creator><pubDate>Wed, 30 Jun 2004 15:45:18 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Wed, 30 Jun 2004 16:30:09 GMT]]></title><description><![CDATA[<p>Eine Möglichkeit die ich sehen würde ist eine DLL-Globale und exportierende Zugriffsfunktionen (getF, setF) wies Joe geschrieben hatte.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550469</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550469</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 30 Jun 2004 16:30:09 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Wed, 30 Jun 2004 20:52:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Datenaustausch zwischen seperaten Anwendungen auszutauschen<br />
sollte doch mittels API funktionieren (Atom)</p>
<p>Bin mir nicht ganz sicher <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>MfG<br />
Klaus</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550571</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550571</guid><dc:creator><![CDATA[KlausB]]></dc:creator><pubDate>Wed, 30 Jun 2004 20:52:17 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Thu, 01 Jul 2004 05:45:47 GMT]]></title><description><![CDATA[<p>Es gibt mehrere Wege Datenaustausch zu betreiben. das Atom ist eine, es gibt aber auch noch Pipes, Semaphoren, etc.</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/550663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550663</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 01 Jul 2004 05:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to dll (statisch) import mehrere projekte on Thu, 01 Jul 2004 05:53:52 GMT]]></title><description><![CDATA[<p>Hi, das habe ich gestern schon versucht zu posten... Aber es war ja wieder mal kein Zugriff möglich....</p>
<p>Ich hab' dazu folgendes gefunden (allerdings bin ich mir nicht sicher ober das nur mit MFC funktioniert):</p>
<blockquote>
<p>Du musst wie folgt vorgehen: 1. Definiere Dir einen eigenen Datentypen, welchen Du in den shared Memory halten willst, z.B.:</p>
<pre><code>typedef struct structSHM_ 
{ 
	TCHAR			szMyString[256]; 
} STRUCTSHM, *PSTRUCTSHM;
</code></pre>
<p>2. Definiere folgende zwei globale Variablen in Deiner DLL:</p>
<pre><code>// globale Variablen 
HANDLE			hMapping = NULL; 
PSTRUCTSHM		pSHM;
</code></pre>
<p>3. Nun erstellst Du ein FileMapping-Object in der DllMain-Methode im Bereich &quot;case DLL_PROCESS_ATTACH:&quot;, wie folgt:</p>
<pre><code>// Create a file mapping object. 
SECURITY_ATTRIBUTES secAttr; 
SECURITY_DESCRIPTOR sid; InitializeSecurityDescriptor(&amp;sid, SECURITY_DESCRIPTOR_REVISION); 
SetSecurityDescriptorDacl(&amp;sid, TRUE, NULL, FALSE); secAttr.nLength=sizeof(SECURITY_ATTRIBUTES); 
secAttr.lpSecurityDescriptor=&amp;sid; 
secAttr.bInheritHandle=TRUE; hMapping = ::CreateFileMapping ((HANDLE) INVALID_HANDLE_VALUE, 
				&amp;secAttr,  
				PAGE_READWRITE, 
				0, 
				sizeof(STRUCTSHM), 
				SHMNAME); 
if (hMapping == NULL || hMapping == INVALID_HANDLE_VALUE) 
{ 
	// Fehlermeldung ausgeben				 
	return FALSE; 
} // Convert the handle into a pointer. 
pSHM = (PSTRUCTSHM) ::MapViewOfFile (hMapping, FILE_MAP_ALL_ACCESS, 					0, 0, 0); if (pSHM == NULL) 
{ 
	// Fehlermeldung ausgeben					::CloseHandle (hMapping); 
	return FALSE; 
}
</code></pre>
<p>4. In der DLLMain-Methode im Abschnitt &quot;case DLL_PROCESS_DETACH:&quot; kann der SharedMemory wieder geschlossen werden (wird aufgerufen, wenn kein Prozess mehr einen verweis auf die DLL hat):</p>
<pre><code>if (pSHM) 
{ 
	::UnmapViewOfFile (pSHM); 
	pSHM = NULL; 
} 
if	(hMapping) 
{ 
	::CloseHandle (hMapping); 
	hMapping = NULL; 
}
</code></pre>
<p>5. In der .def-Datei Deines DLL-Projektes musst Du nun noch den folgenden Eintrag hinzufügen:</p>
<p>SECTIONS<br />
.sdata READ WRITE SHARED</p>
<p>Das wars. Nun kannst Du Daten aus verschiedenen Prozessen, welche Deine DLL laden über den definierten Shared-Memory-Bereich austauschen. Du solltest aber deine DLL Multithreading-fähig programmieren, so dass sich verschiedene Prozesse untereinander nicht ungewollt beeinflussen.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/550668</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/550668</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 01 Jul 2004 05:53:52 GMT</pubDate></item></channel></rss>