471,319 Members | 1,831 Online
Bytes | Software Development & Data Engineering Community
Post +

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 471,319 software developers and data experts.

Calling external functions

I am at my wits end here. I have a simple project with one global function
returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how in
the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.
Dec 8 '05 #1
6 5949
Tim,

You should have received an error when you added it to your project. If
you have a function that is exported by a DLL, you need to call it through
the P/Invoke layer. If the dll is somewhere in the path where LoadLibrary
will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global function
returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how in
the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.

Dec 8 '05 #2
I did that exactly and it says "Unable to find an entry point named gettime
in DLL ctime.dll"
"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard.caspershouse.com> wrote in
message news:uz**************@TK2MSFTNGP09.phx.gbl...
Tim,

You should have received an error when you added it to your project.
If you have a function that is exported by a DLL, you need to call it
through the P/Invoke layer. If the dll is somewhere in the path where
LoadLibrary will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global
function returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how in
the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.


Dec 8 '05 #3
this should be so simple....here is the code in my simple "C" dll

#define DllExport __declspec(dllexport)

#include <time.h>

//DllExport

long gettime(void);

long gettime()

{

time_t tt = time(NULL);

return (long)tt;

}

--------------------------------------------------------------------------
here is the import in my C# app

[DllImport("ctime.dll", CallingConvention=CallingConvention.Cdecl)]

public static extern long gettime();

-------------------------------------------

I've tried several different CallingConventions and nothing same thing
"Unable to find entry point named gettime in dll ctime.dll


"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard.caspershouse.com> wrote in
message news:uz**************@TK2MSFTNGP09.phx.gbl...
Tim,

You should have received an error when you added it to your project.
If you have a function that is exported by a DLL, you need to call it
through the P/Invoke layer. If the dll is somewhere in the path where
LoadLibrary will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global
function returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how in
the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.


Dec 9 '05 #4
The line
//DllExport

was not always commented ....
"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:uq**************@TK2MSFTNGP14.phx.gbl...
this should be so simple....here is the code in my simple "C" dll

#define DllExport __declspec(dllexport)

#include <time.h>

//DllExport

long gettime(void);

long gettime()

{

time_t tt = time(NULL);

return (long)tt;

}

--------------------------------------------------------------------------
here is the import in my C# app

[DllImport("ctime.dll", CallingConvention=CallingConvention.Cdecl)]

public static extern long gettime();

-------------------------------------------

I've tried several different CallingConventions and nothing same thing
"Unable to find entry point named gettime in dll ctime.dll


"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard.caspershouse.com> wrote
in message news:uz**************@TK2MSFTNGP09.phx.gbl...
Tim,

You should have received an error when you added it to your project.
If you have a function that is exported by a DLL, you need to call it
through the P/Invoke layer. If the dll is somewhere in the path where
LoadLibrary will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global
function returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how
in the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.



Dec 9 '05 #5
AAAHHHHH changed the name of my code file from .cpp to .c removed the
function prototype and now it finds it....go figure


"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2***************@TK2MSFTNGP12.phx.gbl...
The line
//DllExport

was not always commented ....
"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:uq**************@TK2MSFTNGP14.phx.gbl...
this should be so simple....here is the code in my simple "C" dll

#define DllExport __declspec(dllexport)

#include <time.h>

//DllExport

long gettime(void);

long gettime()

{

time_t tt = time(NULL);

return (long)tt;

}

--------------------------------------------------------------------------
here is the import in my C# app

[DllImport("ctime.dll", CallingConvention=CallingConvention.Cdecl)]

public static extern long gettime();

-------------------------------------------

I've tried several different CallingConventions and nothing same thing
"Unable to find entry point named gettime in dll ctime.dll


"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard.caspershouse.com> wrote
in message news:uz**************@TK2MSFTNGP09.phx.gbl...
Tim,

You should have received an error when you added it to your project.
If you have a function that is exported by a DLL, you need to call it
through the P/Invoke layer. If the dll is somewhere in the path where
LoadLibrary will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global
function returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how
in the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.



Dec 9 '05 #6
In C++ you have to export your functions with "C linkage", that is, you need
to wrap your functions or prototypes in a C linkage block.

extern "C"
{
__declspec(dllexport) long gettime();
...
}

long gettime()
{
...
}
Note also that your function declaration in C# has the wrong return type, a
long in C/C++ is 32 bit a long in C# is 64 bit.

[C#]
public static extern int gettime();
Willy.

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:uq**************@TK2MSFTNGP14.phx.gbl...
this should be so simple....here is the code in my simple "C" dll

#define DllExport __declspec(dllexport)

#include <time.h>

//DllExport

long gettime(void);

long gettime()

{

time_t tt = time(NULL);

return (long)tt;

}

--------------------------------------------------------------------------
here is the import in my C# app

[DllImport("ctime.dll", CallingConvention=CallingConvention.Cdecl)]

public static extern long gettime();

-------------------------------------------

I've tried several different CallingConventions and nothing same thing
"Unable to find entry point named gettime in dll ctime.dll


"Nicholas Paldino [.NET/C# MVP]" <mv*@spam.guard.caspershouse.com> wrote
in message news:uz**************@TK2MSFTNGP09.phx.gbl...
Tim,

You should have received an error when you added it to your project.
If you have a function that is exported by a DLL, you need to call it
through the P/Invoke layer. If the dll is somewhere in the path where
LoadLibrary will find it, you can do this:

[DllImport("<dll name here>.dll")]
static extern int myfunc();

And then call the dll function in managed code.

Hope this helps.
--
- Nicholas Paldino [.NET/C# MVP]
- mv*@spam.guard.caspershouse.com

"Tim Greenwood" <tim_greenwood A-T yahoo D-O-T com> wrote in message
news:%2****************@TK2MSFTNGP12.phx.gbl...
I am at my wits end here. I have a simple project with one global
function returning a long value.

__declspec(dllexport) long myfunc()
{
}

I've built the dll, added it as a reference to my C# project. Now how
in the world do I reference "myfunc" ????
It totally eludes me.

Many thanks for any help here.



Dec 9 '05 #7

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

10 posts views Thread by Kyler Laird | last post: by
19 posts views Thread by Deniz Bahar | last post: by
47 posts views Thread by teju | last post: by

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.