我必须在C#项目中引用一个不是我创建的dll。当我尝试添加引用时,我收到了无法添加dell的错误。我尝试使用TlbImp.exe,如:
TlbImp.exe 'C:\\Desktop\PCMiler\pcmsrv64.dll'
我收到的错误是dll不是有效的类型库。
然后我试了
[DllImport("C:\\VSProjects\\PCMilerConnect\\pcmsrv64.dll")]
但它没有用。 我也尝试过:
regsvr32 'C:\\Desktop\PCMiler\pcmsrv64.dll'
我得到了dll加载但未找到入口点的错误。 我做错了什么?
答案 0 :(得分:1)
您使用
尝试的方式[DllImport("C:\\VSProjects\\PCMilerConnect\\pcmsrv64.dll")]
是正确的,但正如错误消息所述,您需要指定入口点。
这意味着如果您要调用的C ++函数名为DoFoo()
,则需要使用函数作为入口点导入Dll:
[DllImport("C:\\VSProjects\\PCMilerConnect\\pcmsrv64.dll", EntryPoint="DoFoo")]
入口点是function name or ordinal。 另请参阅DllImport attribute documentation。
编辑:试试这是否适合你:
[DllImport("C:\\VSProjects\\PCMilerConnect\\pcmsrv64.dll", EntryPoint="PCMSLookup")]
public static extern int PCMSLookup(Trip tripId, string placeName, int easyMatch);
前提是您还在C#中定义了一个名为Trip
的结构,类似于C ++端Trip
。
编辑2:
你说你无权访问签名,所以我相信你可能会传递Trip
而不是传递int
。试试这个:
[DllImport("C:\\VSProjects\\PCMilerConnect\\pcmsrv64.dll", EntryPoint="PCMSLookup")]
public static extern int PCMSLookup(int tripId, string placeName, int easyMatch);