我先在VC里创建了一个DLL,
CPP文件是这样的:
int _stdcall Add(int a, int b)
{
return a+b;
}int _stdcall Sub(int a, int b)
{
return a-b;
}def文件是这样的:
EXPORTSAdd @1
Sub @2在C#中:
using System.Runtime.InteropServices;
[DllImport("testDll.dll")] public static extern int Add(int a, int b);
public int add(int a, int b)
{
return Add(a,b);
} public static extern int Sub(int a, int b);
public int sub(int a, int b)
{
return Sub(a,b);
}
在C#中提示:方法、运算符Sub(int,int)被标记为extern并且没有属性。请考虑添加DllImport属性指定。
运行时发生意外中断。如果在C#中把Sub与Add两函数位置互换,这提示Add(int,int)出现同样的问题,而Sub这没有问题。如果任意去掉一个函数,都可以正常运行。看样子是不能同时从一个DLL使用两个函数。不知哪里没有设置正确,请大虾们帮忙。谢谢。另外,DllImport导入DLL时,不知EntryPoint的具体含义是什么?不写也是可以的吧?
CPP文件是这样的:
int _stdcall Add(int a, int b)
{
return a+b;
}int _stdcall Sub(int a, int b)
{
return a-b;
}def文件是这样的:
EXPORTSAdd @1
Sub @2在C#中:
using System.Runtime.InteropServices;
[DllImport("testDll.dll")] public static extern int Add(int a, int b);
public int add(int a, int b)
{
return Add(a,b);
} public static extern int Sub(int a, int b);
public int sub(int a, int b)
{
return Sub(a,b);
}
在C#中提示:方法、运算符Sub(int,int)被标记为extern并且没有属性。请考虑添加DllImport属性指定。
运行时发生意外中断。如果在C#中把Sub与Add两函数位置互换,这提示Add(int,int)出现同样的问题,而Sub这没有问题。如果任意去掉一个函数,都可以正常运行。看样子是不能同时从一个DLL使用两个函数。不知哪里没有设置正确,请大虾们帮忙。谢谢。另外,DllImport导入DLL时,不知EntryPoint的具体含义是什么?不写也是可以的吧?
解决方案 »
- 指点一下关于权限管理设计方案
- c#中音频文件格式问题
- 浮动qq在线客服 不支持新QQ号
- Visual Studio 2008 Association问题
- TextBox自动提示字体设置
- 一个小问题
- 我在书上看见了toolbar控件 可是在2005中没有找到 请问该怎么使用
- 怎么数据库连接实现和DropDownList一样的效果
- c#TCP编程 心跳问题 求具体代码
- 求救啊 各位高人帮小弟一把啊
- 请问,在.aspx中如何用c#程序备份一个mssqlserver数据库(不是复制.ldf和.mdf而是生成一个备份文件)
- CE下如何显示韩文,别人说只要安装了字体就可以,字体文件在哪里获得,如何使之工作?
public int add(int a, int b)
{
return Add(a,b);
}
[DllImport("testDll.dll")]
public static extern int Sub(int a, int b);
public int sub(int a, int b)
{
return Sub(a,b);
}
也就是说,我只要采用原来的函数名,这一项就不需要填写了?20011521,再一次感谢您详实的解答。