首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C# DllImport中使用32位或64位动态链接库

在C# DllImport中使用32位或64位动态链接库
EN

Stack Overflow用户
提问于 2012-06-01 22:56:22
回答 4查看 57.5K关注 0票数 69

情况是这样的,我在dot.net应用程序中使用了一个基于C的动态链接库。有两个dll,一个是称为MyDll32.dll的32位版本,另一个是称为MyDll64.dll的64位版本。

有一个静态变量保存着DLL文件名: string DLL_FILE_NAME。

它的用法如下:

代码语言:javascript
复制
[DllImport(DLL_FILE_NAME, CallingConvention=CallingConvention.Cdecl, EntryPoint=Func1")]
private static extern int is_Func1(int var1, int var2);

到目前为止很简单。

可以想象,该软件是在“任意CPU”打开的情况下编译的。

我还有以下代码来确定系统应该使用64位文件还是32位文件。

代码语言:javascript
复制
#if WIN64
        public const string DLL_FILE_NAME = "MyDll64.dll";
#else
        public const string DLL_FILE_NAME = "MyDll32.dll";        
#endif

现在你应该看到问题所在了..DLL_FILE_NAME是在编译时定义的,而不是在执行时定义的,因此不会根据执行上下文加载正确的dll。

处理这个问题的正确方法是什么?我不想要两个执行文件(一个用于32位,另一个用于64位)?在DllImport语句中使用DLL_FILE_NAME之前,如何设置它?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10852634

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档