C#中调用dll

maggie_ma 2003-08-18 03:15:08
我要加载x.dll文件
x.dll文件有几个类及方法
但我这么写还是报错,为什么?
public class Login: System.Web.UI.Page
{
[System.Runtime.InteropServices.DllImport("CCA.dll")]
public static extern Boolean AlternateCall();
private void Page_Load(object sender, System.EventArgs e)
{
// // 在此处放置用户代码以初始化页面
Boolean x;
x = AlternateCall();
if(x==true)
Response.Write("sss");
else
Response.Write("as");

}
}
在x = AlternateCall();报错
请教怎么调用?
...全文
21 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
prowan 2003-08-18
  • 打赏
  • 举报
回复
如果x.dll是VC写的那么应该像下面这样做:
[DllImport("Kernel32.dll", CharSet = System.Runtime.InteropServices.CharSet.Unicode, EntryPoint = "FormatMessage")]
private static extern unsafe int FormatMessage(
int flags,
void* source,
int messageId,
int languageId,
void* buffer,
int size,
void* argument);

如果x.dll是C#写的,则将x.dll加入引用即可,另外,注意把x.dll放在主程序目录下
panyee 2003-08-18
  • 打赏
  • 举报
回复
对tlb所在目录aspnet要有控制权限

maggie_ma 2003-08-18
  • 打赏
  • 举报
回复
不行,还是这个错误。
panyee 2003-08-18
  • 打赏
  • 举报
回复
把machine.config文件中<processModel>的userName="machine"改成"system"试试
maggie_ma 2003-08-18
  • 打赏
  • 举报
回复
是用VB写的。为*.tlb文件,我把它转为dll文件
因为将*.tlb文件引用进来也不好用,总是运行时报错:

异常详细信息: System.UnauthorizedAccessException: 拒绝访问。

未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。
panyee 2003-08-18
  • 打赏
  • 举报
回复
你的CCA.dll是用VC写的吗?

如果只是.net组件, 那直接添加引用进来调用即可
maggie_ma 2003-08-18
  • 打赏
  • 举报
回复
这个alternatecall() 函数属于AgentPhoneclass这个类,在
[System.Runtime.InteropServices.DllImport("CCA.dll")]
public static extern Boolean AlternateCall();
怎么写?
maggie_ma 2003-08-18
  • 打赏
  • 举报
回复
我用引用的方法如下:
1.将x.dll引用过来
2.using X;
private void Page_Load(object sender, System.EventArgs e)
{
// // 在此处放置用户代码以初始化页面
X.AgentPhoneClass S = new X..AgentPhoneClass();
Boolean y;
y = S.AlternateCall();
}
编译通过,但X.AgentPhoneClass S = new X..AgentPhoneClass 报错!!
panyee 2003-08-18
  • 打赏
  • 举报
回复
报什么错? 你的CCA.dll有没有放在bin目录下?

public static extern Boolean AlternateCall();
改成
public static extern bool AlternateCall();

Boolean x;
也改成
bool x;

应该是不用Boolean了
lttdzgg 2003-08-18
  • 打赏
  • 举报
回复
其实不用这么麻烦,只需把X.dll文件引用进来就可以了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧