<?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[Klasse aus dll holen ohne lib]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab ein etwas größeres problem und hoffe mir kann jemand helfen.</p>
<p>also ich hab eine Hardware, bei der Hardware liegen dlls und libs und header dabei.</p>
<p>Problem ist das die Lib datei nicht für borland ist. (coff fehler). alles umwandeln der datei hat nichts geholfen.</p>
<p>Aber mir ist etwas eingefallen. Und zwar hat mir mal jemand geholfen eine funktion aus einer dll zu holen ohne über die lib zu gehen.</p>
<p>das ganze sah dabei etwa so aus:</p>
<pre><code class="language-cpp">int BPM_Create(void)
{
   HINSTANCE hInstance;
   typedef int (DLLFUNCTION1)(void);
   DLLFUNCTION1   *pDllFunction1;
   hInstance = ::LoadLibrary(&quot;bpmDetect.dll&quot;);
   pDllFunction1  = (DLLFUNCTION1*)::GetProcAddress((HMODULE)hInstance, &quot;BPM_Create&quot;);
   int result;
   if(pDllFunction1)
        result= (*pDllFunction1)();

   return result;
};
</code></pre>
<p>ich glaub dazu schwirrt auch noch irgendwo ein Thema davon im Forum rum.</p>
<p>naja, das hatte dabei auf jedenfall funktioniert.</p>
<p>jetzt die frage ob das ganze auch mit klassen geht und wie das ganze dann aussehen muss?!?!</p>
<p>also in der h datei ist zur zeit folgende klasse gegeben:</p>
<pre><code class="language-cpp">class EXPORTED Bench : public BaseJavaClass
{
public: 
	Bench();
	JString getFilterWavelength();
	void setFilterWavelength(JString&amp; value);
	JString getSlitSize();
	void setSlitSize(JString&amp; value);
	JString getGrating();
	void setGrating(JString&amp; value);
	~Bench();
	// No public Java copy constructor; creating one:
	Bench(const Bench &amp;that);
	// Creating assignment operator
	Bench &amp;operator=(const Bench &amp;that);

private:
	jmethodID mid_Bench729;
	jmethodID mid_getFilterWavelength730;
	jmethodID mid_setFilterWavelength731;
	jmethodID mid_getSlitSize732;
	jmethodID mid_setSlitSize733;
	jmethodID mid_getGrating734;
	jmethodID mid_setGrating735;
	void init_ids();
};
</code></pre>
<p>wie bekomm ich die jetzt aus der DLL??</p>
<p>Ich will hoffen das mir dabei einer helfen kann !!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/209260/klasse-aus-dll-holen-ohne-lib</link><generator>RSS for Node</generator><lastBuildDate>Thu, 20 Aug 2026 13:06:11 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/209260.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 28 Mar 2008 12:34:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klasse aus dll holen ohne lib on Fri, 28 Mar 2008 12:34:29 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich hab ein etwas größeres problem und hoffe mir kann jemand helfen.</p>
<p>also ich hab eine Hardware, bei der Hardware liegen dlls und libs und header dabei.</p>
<p>Problem ist das die Lib datei nicht für borland ist. (coff fehler). alles umwandeln der datei hat nichts geholfen.</p>
<p>Aber mir ist etwas eingefallen. Und zwar hat mir mal jemand geholfen eine funktion aus einer dll zu holen ohne über die lib zu gehen.</p>
<p>das ganze sah dabei etwa so aus:</p>
<pre><code class="language-cpp">int BPM_Create(void)
{
   HINSTANCE hInstance;
   typedef int (DLLFUNCTION1)(void);
   DLLFUNCTION1   *pDllFunction1;
   hInstance = ::LoadLibrary(&quot;bpmDetect.dll&quot;);
   pDllFunction1  = (DLLFUNCTION1*)::GetProcAddress((HMODULE)hInstance, &quot;BPM_Create&quot;);
   int result;
   if(pDllFunction1)
        result= (*pDllFunction1)();

   return result;
};
</code></pre>
<p>ich glaub dazu schwirrt auch noch irgendwo ein Thema davon im Forum rum.</p>
<p>naja, das hatte dabei auf jedenfall funktioniert.</p>
<p>jetzt die frage ob das ganze auch mit klassen geht und wie das ganze dann aussehen muss?!?!</p>
<p>also in der h datei ist zur zeit folgende klasse gegeben:</p>
<pre><code class="language-cpp">class EXPORTED Bench : public BaseJavaClass
{
public: 
	Bench();
	JString getFilterWavelength();
	void setFilterWavelength(JString&amp; value);
	JString getSlitSize();
	void setSlitSize(JString&amp; value);
	JString getGrating();
	void setGrating(JString&amp; value);
	~Bench();
	// No public Java copy constructor; creating one:
	Bench(const Bench &amp;that);
	// Creating assignment operator
	Bench &amp;operator=(const Bench &amp;that);

private:
	jmethodID mid_Bench729;
	jmethodID mid_getFilterWavelength730;
	jmethodID mid_setFilterWavelength731;
	jmethodID mid_getSlitSize732;
	jmethodID mid_setSlitSize733;
	jmethodID mid_getGrating734;
	jmethodID mid_setGrating735;
	void init_ids();
};
</code></pre>
<p>wie bekomm ich die jetzt aus der DLL??</p>
<p>Ich will hoffen das mir dabei einer helfen kann !!! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482082</guid><dc:creator><![CDATA[JBOpael]]></dc:creator><pubDate>Fri, 28 Mar 2008 12:34:29 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus dll holen ohne lib on Fri, 28 Mar 2008 12:43:27 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Nein Klassen können nicht dynamisch aus DLLs geladen werden, nur rein statische Funktionen. Überhaupt wirst du eine fremde Klassen-DLL nur sauber verwenden können wenn die DLL auch mit dem exakt gleichem Borland-Compiler erstellt wurden, denn das macht mangels Standard jeder Compiler auf seine Art.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482089</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Fri, 28 Mar 2008 12:43:27 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus dll holen ohne lib on Sat, 29 Mar 2008 18:33:43 GMT]]></title><description><![CDATA[<p>Der Import bzw. Export/von Klassen ist möglich indem eine statische Funktion eine Instanz jener Klasse erstellt und diese dann weiterleitet.</p>
<p>Vielleicht hilft dir folgender Beispielcode:</p>
<pre><code class="language-cpp">#define EXPORT_DLL	//	beim importieren auskommentieren..

#ifdef EXPORT_DLL
# define DLL_ACCESS __declspec (dllexport)
#else
# define DLL_ACCESS __declspec (dllimport)
#endif

class DLL_ACCESS Test
{
public:
	//	verwendete methoden muessen als virtual deklariert werden
	virtual int GetValue();	
};

extern &quot;C&quot; __declspec (dllexport) Test* CreateInstance();
</code></pre>
<p>-----</p>
<p>Source:</p>
<pre><code class="language-cpp">#include &quot;Test.h&quot;

extern &quot;C&quot; DLL_ACCESS Test* CreateInstance()
{
	return (new Test);
}

int Test::GetValue()
{
	return 23;
}
</code></pre>
<p>-----</p>
<p>Importvorgang:</p>
<pre><code class="language-cpp">#include &lt;Windows.h&gt;
#include &quot;../dll_export/Test.h&quot;

int main()
{
	HINSTANCE hInstance = ::LoadLibrary(&quot;dll_export.dll&quot;);

	typedef Test* (*DLL_Func)();
	DLL_Func pFunc = (DLL_Func)GetProcAddress((HMODULE)hInstance, &quot;CreateInstance&quot;);
	Test * test = (*pFunc)();
	int check = test-&gt;GetValue();
	return 0;
}
</code></pre>
<p>----</p>
<p>Viel Erfolg ! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482652</guid><dc:creator><![CDATA[apollux]]></dc:creator><pubDate>Sat, 29 Mar 2008 18:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klasse aus dll holen ohne lib on Sat, 29 Mar 2008 13:38:03 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>@ apollux :<br />
Deine Lösung beseitigt aber nicht das eigentliche Problem : Das Klassen von jedem Compiler unterschiedlich verwaltet werden. Das von dir gezeigte dynamische Erstellen von Instanzen ist nur dann korrekt wenn DLL und Programm mit dem selben Compiler kompiliert wurden. Und in diesem Fall kann man die DLL auch gleich statisch linken, ohne Umweg über eine CreateInstanz-Funktion.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1482663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1482663</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Sat, 29 Mar 2008 13:38:03 GMT</pubDate></item></channel></rss>