我正在尝试在C#应用程序中引用DLL。 DLL是用C ++编写的。要进行引用,我右键单击解决方案资源管理器上的“引用”部分,然后选择“添加引用”,然后浏览到它。每次我尝试,我都会收到一条错误消息
无法添加对xxx.DLL的引用。请确保 文件是可访问的,并且它是有效的程序集或COM组件。
做了一些谷歌搜索,我注意到很多人建议使用TlbImp.exe来获取有效的DLL,但是当我在命令行运行它时,我明白了,
TlbImp:错误TI0000:输入文件xxx.dll不是有效类型 库。
我确实发现有问题的DLL可能写得不好(编写它的人现在正在度假)所以我通过this microsoft演练来创建一个新的,非常简单的dll,并且我得到了同样的结果。
我正在使用VS2015,虽然我以前安装过VS2013 Express。我也在VS2013和VS2010的另一台机器上尝试了相同的过程。效果是一样的。
有没有人有任何想法?
答案 0 :(得分:1)
将您的dll包含在项目中,然后将其作为资源嵌入,并选择将其复制到输出目录(如果更新或始终:https://static1.squarespace.com/static/508eb96ae4b047ba54db4e47/t/519e1809e4b01e6a03d7f51b/1369315338280/properties.png?format=750w
然后使用平台调用:
SELECT DISTINCT journey_items.id,
journey_items.category,
therapist_title,
therapist_body
FROM journey_items
WHERE EXISTS (SELECT id
FROM journey_item_display_rules
WHERE (`journey_item_id` = journey_items.id )
AND (`category` = 'soc' AND `value` = 'any')
)
AND EXISTS(SELECT id
FROM journey_item_display_rules
WHERE (`journey_item_id` = journey_items.id )
AND (`category` = 'condition' AND `value` = '38')
OR (`category` = 'condition' AND `value` = '25')
)
AND EXISTS(SELECT id
FROM journey_item_display_rules
WHERE (`journey_item_id` = journey_items.id )
AND (`category` = 'step' AND `value` = 'any')
)
有时您可能必须使用本机类型但它们与CLR不兼容以避免使用编组: https://www.codeproject.com/articles/66245/marshaling-with-csharp-chapter-1-introducing-marsh.aspx