发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Fri Feb 2 21:52:04 2007), 站内
包含头文件吗?lib吗?3x!
--
[本篇全文] [本篇作者:RUSSELLXP] [进入讨论区] [返回顶部]2发信人: RUSSELLXP (哈雷路亚), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Fri Feb 2 21:59:21 2007), 站内
MSDN P/Invoke
※ 来源:·水木社区 newsmth.net·[FROM: 166.111.18.*]
[本篇全文] [本篇作者:Felomeng] [进入讨论区] [返回顶部]3发信人: Felomeng (我爱南开), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 09:59:11 2007), 站内
解决方案资源管理器中
引用上右键->添加引用->浏览->下面就不用我说了吧
简单易行,它会自动判断dll类型
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 包含头文件吗?lib吗?3x!
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]4发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 10:41:13 2007), 站内
...
真的行?
【 在 Felomeng (我爱南开) 的大作中提到: 】
: 解决方案资源管理器中
: 引用上右键->添加引用->浏览->下面就不用我说了吧
: 简单易行,它会自动判断dll类型
: ...................
--
[本篇全文] [本篇作者:Felomeng] [进入讨论区] [返回顶部]5发信人: Felomeng (我爱南开), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 10:43:07 2007), 站内
不妨试试多说无益
【 在 pseudocode (I can Run!) 的大作中提到: 】
: ...
: 真的行?
※ 来源:·水木社区 newsmth.net·[FROM: 124.64.26.127]
[本篇全文] [本篇作者:Nineteen] [进入讨论区] [返回顶部]6发信人: Nineteen (在哪里倒下,就在哪里躺下!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 10:52:53 2007), 站内
貌似com可以这么用...
规则dll不行...
【 在 Felomeng (我爱南开) 的大作中提到: 】
: 不妨试试多说无益
※ 来源:·水木社区 newsmth.net·[FROM: 221.130.45.*]
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]7发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:09:13 2007), 站内
VC 的.h文件是
#ifdef SINGLEOPTIMIZE_EXPORTS
#define SINGLEOPTIMIZE_API __declspec(dllexport)
...
SINGLEOPTIMIZE_API int _stdcall InterSectionCircle(int _ShortestGreen,int _SpaceofGreen,int _LostTime,
int _MaxCircle,int *_Capacity,int _PhaseCount,double _StopFactor,bool *_LampState,
double *_SaturationLimit,int *_FactualFlow,double &Circle,int*_LampGreen);
C#这样引入报错:在dll里面找不到该函数的入口点
[
DllImport("SingleOptimize"
, EntryPoint = "InterSectionCircle"
, CallingConvention = CallingConvention.StdCall
)
]
public static extern int InterSectionCircle(int ShortestGreen,int SpaceofGreen,int LostTime,int MaxCircle,int[] Capacity,
int PhaseCount,double StopFactor,bool[] LampState,double[] SaturationLimit,int[] FactualFlow,double Circle,int[] LampGreen);
3x!
【 在 RUSSELLXP (哈雷路亚) 的大作中提到: 】
: MSDN P/Invoke
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]8发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:11:02 2007), 站内
前面有贴说:
P/Invoke ("DllImport") in C# could only call static method in native dll.
The best way is recompile your C++ project with C++/CLI, then you can get a
managed dll which could be directly referenced by C# project.
怎么弄呢?3x!
【 在 RUSSELLXP (哈雷路亚) 的大作中提到: 】
MSDN P/Invoke
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 包含头文件吗?lib吗?3x!
--
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]9发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:27:50 2007), 站内
不要误导别人
【 在 Felomeng (我爱南开) 的大作中提到: 】
: 不妨试试多说无益
--
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]10发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:29:12 2007), 站内
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
VC 的.h文件是
#ifdef SINGLEOPTIMIZE_EXPORTS
#define SINGLEOPTIMIZE_API __declspec(dllexport)
...
SINGLEOPTIMIZE_API int _stdcall InterSectionCircle(int _ShortestGreen,int _SpaceofGreen,int _LostTime,
int _MaxCircle,int *_Capacity,int _PhaseCount,double _StopFactor,bool *_LampState,
double *_SaturationLimit,int *_FactualFlow,double &Circle,int*_LampGreen);
C#这样引入报错:在dll里面找不到该函数的入口点
[
DllImport("SingleOptimize"
~~~~~~~~~~~~~~dll全名,要加上扩展名
, EntryPoint = "InterSectionCircle"
, CallingConvention = CallingConvention.StdCall
)
]
public static extern int InterSectionCircle(int ShortestGreen,int SpaceofGreen,int LostTime,int MaxCircle,int[] Capacity,
int PhaseCount,double StopFactor,bool[] LampState,double[] SaturationLimit,int[] FactualFlow,double Circle,int[] LampGreen);
3x!
【 在 RUSSELLXP (哈雷路亚) 的大作中提到: 】
: MSDN P/Invoke
--
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]11发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:29:37 2007), 站内
不行,提示不是合法的com或assembly
【 在 Felomeng (我爱南开) 的大作中提到: 】
: 解决方案资源管理器中
: 引用上右键->添加引用->浏览->下面就不用我说了吧
: 简单易行,它会自动判断dll类型
: ...................
--
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]12发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:30:08 2007), 站内
原来加了 还是不行
unable to find an entry point named 'InterSetionCircle' in Dll 'SingleOptimize.dll'
dll已经找到,但是没找到该函数
可能是函数里面的vc数据类型跟c#的对不上?
vc的是指针数组
【 在 pseudocode (I can Run!) 的大作中提到: 】
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
VC 的.h文件是
#ifdef SINGLEOPTIMIZE_EXPORTS
#define SINGLEOPTIMIZE_API __declspec(dllexport)
...
SINGLEOPTIMIZE_API int _stdcall InterSectionCircle(int _ShortestGreen,int _SpaceofGreen,int _LostTime,
int _MaxCircle,int *_Capacity,int _PhaseCount,double _StopFactor,bool *_LampState,
double *_SaturationLimit,int *_FactualFlow,double &Circle,int*_LampGreen);
C#这样引入报错:在dll里面找不到该函数的入口点
[
DllImport("SingleOptimize"
~~~~~~~~~~~~~~dll全名,要加上扩展名
, EntryPoint = "InterSectionCircle"
, CallingConvention = CallingConvention.StdCall
)
]
public static extern int InterSectionCircle(int ShortestGreen,int SpaceofGreen,int LostTime,int MaxCircle,int[] Capacity,
int PhaseCount,double StopFactor,bool[] LampState,double[] SaturationLimit,int[] FactualFlow,double Circle,int[] LampGreen);
3x!
【 在 RUSSELLXP (哈雷路亚) 的大作中提到: 】
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]13发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:32:44 2007), 站内
用depends确认一下,你的dllexort出来的函数名是那个吗?
http://www.pinvoke.net/
有很多例子
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 原来加了 还是不行
: dll已经找到,但是没找到该函数
: 可能是函数里面的vc数据类型跟c#的对不上?
: ...................
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]14发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:34:34 2007), 站内
VC里面这样把.h文件include进来就成功了
#include "./SingleOptimize.h"
int result;
result=InterSectionCircle(ShortestGreen,SpaceofGreen,LostTime,MaxCircle,Capacity,PhaseCount,StopFactor,LampState,SaturationLimit,FactualFlow,Circle,LampGreen);
【 在 pseudocode (I can Run!) 的大作中提到: 】
用depends确认一下,你的dllexort出来的函数名是那个吗?
http://www.pinvoke.net/
有很多例子
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 原来加了 还是不行
: dll已经找到,但是没找到该函数
: 可能是函数里面的vc数据类型跟c#的对不上?
: ...................
--
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]15发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:36:02 2007), 站内
可能数据类型不一致的关系?
我前面调c++ builder ,delphi的都可以,不过没涉及到指针的数据类型
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: VC里面这样把.h文件include进来就成功了
: #include "./SingleOptimize.h"
: int result;
: ...................
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]16发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:37:10 2007), 站内
vc 和c#不一样的
你先确认一下
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: VC里面这样把.h文件include进来就成功了
: #include "./SingleOptimize.h"
: int result;
: ...................
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]17发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:37:45 2007), 站内
数据类型不一致顶多会导致你调用的时候出错,不会说找不到函数
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 可能数据类型不一致的关系?
: 我前面调c++ builder ,delphi的都可以,不过没涉及到指针的数据类型
[本篇全文] [本篇作者:hBifTs] [进入讨论区] [返回顶部]18发信人: hBifTs (OS真过瘾...), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:41:25 2007), 站内
非COM的dll是绝对不行的!
【 在 Felomeng (我爱南开) 的大作中提到: 】
: 不妨试试多说无益
[本篇全文] [本篇作者:grapl] [进入讨论区] [返回顶部]19发信人: grapl (grapl), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:42:37 2007), 站内
是用C++写的吗?定义extern “C”了吗?
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: VC 的.h文件是
: #ifdef SINGLEOPTIMIZE_EXPORTS
: #define SINGLEOPTIMIZE_API __declspec(dllexport)
: ...................
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]20发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 11:43:19 2007), 站内
估计没有
所以我才让他用depends确认一下
【 在 grapl (grapl) 的大作中提到: 】
: 是用C++写的吗?定义extern “C”了吗?
'
发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 12:07:49 2007), 站内
怎么操作?没有那个dll源码,只是有 VC调用的例子,
VC调用的话,dll里面没写 extern “C都可以吗?
3X!
【 在 pseudocode (I can Run!) 的大作中提到: 】
: 估计没有
: 所以我才让他用depends确认一下
[本篇全文] [本篇作者:abcim] [进入讨论区] [返回顶部]22发信人: abcim (简单一些,直接一些), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 12:08:55 2007), 站内
数据类型不一致会否说是另外一个函数,类似函数重构
3X!
【 在 pseudocode (I can Run!) 的大作中提到: 】
数据类型不一致顶多会导致你调用的时候出错,不会说找不到函数
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 可能数据类型不一致的关系?
: 我前面调c++ builder ,delphi的都可以,不过没涉及到指针的数据类型
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]23发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 12:13:14 2007), 站内
没有extern "C"的话,用vc调用是可以的,但是c#不行
你看depends,然后看一下那个函数的ordinal是多少
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 怎么操作?没有那个dll源码,只是有 VC调用的例子,
: VC调用的话,dll里面没写 extern “C都可以吗?
: 3X!
: ...................
[本篇全文] [本篇作者:pseudocode] [进入讨论区] [返回顶部]24发信人: pseudocode (I can Run!), 信区: DotNET
标 题: Re: 请问c#怎么调用vc的dll?
发信站: 水木社区 (Sat Feb 3 12:13:26 2007), 站内
no
【 在 abcim (简单一些,直接一些) 的大作中提到: 】
: 数据类型不一致会否说是另外一个函数,类似函数重构
: 3X!
: 数据类型不一致顶多会导致你调用的时候出错,不会说找不到函数
: ...................
--
※ 来源:·水木社区 newsmth.net·[FROM: 222.129.32.*]