【发布时间】:2019-08-08 13:10:14
【问题描述】:
namespace DLLProj
{
struct DLLProjCore2
{
public const string dll = Environment.GetEnvironmentVariable("DLLProj_HOME", EnvironmentVariableTarget.Machine).ToString();
}
[DllImport(DLLProjCore2.dll)]
public static extern void met1_method1(string prefix, string version);
[DllImport(DLLProjCore2.dll, CharSet = CharSet.Ansi)]
public static extern long met1_method2(IntPtr error, string licenseFile);
}
DLLProjectCore2 正在引用要存储在dll 变量中的路径。
dll分配代码抛出以下错误信息
分配给 DLLProjCore2 的表达式必须是常量。
[DllImport(DLLProjCore2.dll)] 抛出以下错误。
属性参数必须是属性参数类型的常量表达式、typeof表达式或数组创建表达式
一旦硬编码要分配给dll 的值,项目就会正确编译。
public const string dll = "PathToBeReferenced";
有没有办法动态访问[DllImport(DLLProjCore2.dll)] 中的dll 变量值? (没有硬编码,发布解决方案后需要从外部引用)
【问题讨论】:
-
您可以使用静态只读字段而不是 const。
-
@Joe 不,那也行不通。这会将错误转移到
[DllImport(DLLProjCore2.dll)]行,因为需要在编译时评估参数。 -
@cdhowie 感谢您的快速回复。有什么建议可以完成这项任务吗?
-
@HarshaW 查看 Dmitry 链接的问题。
标签: c# struct constants dllimport