467,915 Members | 1,552 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 467,915 developers. It's quick & easy.

static library in c# library control

I'm new to using c#, but what I'm trying to do is create a library control
containing a form which in turn contains a Windows application that I have
defined in another library.

I'm able to do it if my application which I put in the form is a c++ dll
like so:

[DllImport ("C:\\MyApp.dll")]
private extern static void RunMyApp(IntPtr handle);

private void InitializeComponent()
{
this.Name = "MyControl";
this.Size = new System.Drawing.Size(480, 640);
RunMyApp( this.Handle);

}

However, my requirements now dictate that the application I want to put in
this form is contained in a static c++ library. I have not been able to
import the static library into the control. This is literally the only
function that I need to call from my static library application. Is there a
way to do this?
Nov 17 '05 #1
  • viewed: 3281
Share:
4 Replies
Hi,

To the best of my knowledge, you cannot use static C++ libraries from C#
code. What you can do however is to conjure up a very simple C++ dll
exporting just one function, and within that function you will call whatever
you need from the C++ static library. Then, use the resultant DLL from your
C# code through the regular DllImport attribute.

--
Sincerely,
Dmytro Lapshyn [Visual Developer - Visual C# MVP]
"newest newbie" <ne**********@discussions.microsoft.com> wrote in message
news:F8**********************************@microsof t.com...
I'm new to using c#, but what I'm trying to do is create a library control
containing a form which in turn contains a Windows application that I have
defined in another library.

I'm able to do it if my application which I put in the form is a c++ dll
like so:

[DllImport ("C:\\MyApp.dll")]
private extern static void RunMyApp(IntPtr handle);

private void InitializeComponent()
{
this.Name = "MyControl";
this.Size = new System.Drawing.Size(480, 640);
RunMyApp( this.Handle);

}

However, my requirements now dictate that the application I want to put in
this form is contained in a static c++ library. I have not been able to
import the static library into the control. This is literally the only
function that I need to call from my static library application. Is
there a
way to do this?


Nov 17 '05 #2
Thanks for the response :)

However, the reason I need to use a static library is because my end result
is a web application and if I were to use a .dll then the web application
expects the .dll on the users machine....

I'm now looking into an ActiveX control.

If anyone knows another way around it, then please let me know!
Nov 17 '05 #3
On the user machine? Why? If the DLL is used only on the server side, there
is absolutely no need to have it on the client.

--
Sincerely,
Dmytro Lapshyn [Visual Developer - Visual C# MVP]
"newest newbie" <ne**********@discussions.microsoft.com> wrote in message
news:5C**********************************@microsof t.com...
Thanks for the response :)

However, the reason I need to use a static library is because my end
result
is a web application and if I were to use a .dll then the web application
expects the .dll on the users machine....

I'm now looking into an ActiveX control.

If anyone knows another way around it, then please let me know!


Nov 17 '05 #4
Ah, in this scenario - yes, the DLL is required on the client :-(
Therefore, I'd either write the whole control in C++ (by using ATL for
example), or I would have to rewrite the static library in managed code.

BTW: managed Windows Forms controls require IE 6 and .NET Framework on the
client side.
BTW2: The control *might* automatically download necessary DLLs, but I am
not sure which permissions are required for it to do so. What I do remember
is that the DLL must be on the same server and most likely in the same
virtual folder. See no-touch deployment docs in MSDN for more information.

--
Sincerely,
Dmytro Lapshyn [Visual Developer - Visual C# MVP]
"newest newbie" <ne**********@discussions.microsoft.com> wrote in message
news:EF**********************************@microsof t.com...
On the user machine? Why? If the DLL is used only on the server side,
there
is absolutely no need to have it on the client.

When I use a dll in the way I first mentioned in a control library form
and
then place that control in a web application, the control looks for the
dll
on the clients machine. I'm not experienced with this topic, is there a
way
to specify that the dll is on the server?

Thanks for your help


Nov 17 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by A.M | last post: by
4 posts views Thread by Gery D. Dorazio | last post: by
12 posts views Thread by Bonj | last post: by
5 posts views Thread by Sek | last post: by
14 posts views Thread by Jeroen | last post: by
20 posts views Thread by JohnQ | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.