在Visual Studio项目中根据系统平台自动引用32或64位的DLL

最近在使用Noesis.Javascript.dll,但是这个DLL是有X86与X64二种版本的,我自己的电脑是64位的,但是别人的电脑是32位的。所以在别人那里使用的时候出了问题。

在VS里怎么引用二个版本的DLL了。在网上搜索了资料。我修改的对应代码如下:(资料在后面,自己可以看)

    <Reference Condition=" '$(Platform)' == 'AnyCPU' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
    </Reference>
    <Reference Condition=" '$(Platform)' == 'x86' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x86\Noesis.Javascript.dll</HintPath>
    </Reference>
    <Reference Condition=" '$(Platform)' == 'x64' " Include="Noesis.Javascript, Version=0.0.0.0, Culture=neutral, PublicKeyToken=ae36d046c7f89f85, processorArchitecture=AMD64">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>lib\x64\Noesis.Javascript.dll</HintPath>
    </Reference>




最近把系统从WIN2008(32位)更换成WIN2008R2,在64位系统下使用原来在32位系统下开发的程序出现了异常。经调试原来是由于在其中引用了“System.Data.SQLite”的32位的dll,导致在64位下程序无法运行(但是编译可以通过) powered by 25175.net

解决步骤:

1.从http://sourceforge.net/projects/sqlite-dotnet2/files/ 下载最新的X64位DLL,编译后在64位系统上可以正常运行了,但却不能同时在32位的系统上运行。 

2.寻找如何能使项目自动适应不同的平台的解决方案。

解决方案: 



通过更改csproj(C#项目文件的扩展名)文件配置进行对应平台的自适应,其中${Platform}代表对应的平台

方法1.HintPath中使用${Platform}做为变量替换路径

假设你的DLL有两个平台构建,以及他们在以下位置是:

C:\whatever\x86\whatever.dll  
C:\whatever\x64\whatever.dll 

您只需编辑这个协议的.csproj文件:

<HintPath>C:\whatever\x86\whatever.dll</HintPath>  

为:

<HintPath>C:\whatever\${Platform}\whatever.dll</HintPath>  

然后,您应该能够建立您的项目针对这两个平台,和MSBuild会寻求其他选择的平台,为正确的目录。 



方法2:Reference节点增加Condition条件 

a.将32位平台Reference节点增加Condition条件

<Reference Condition=" '$(Platform)' == 'AnyCPU' "……

 b.复制32位平台Reference节点,并改为64位平台,将HintPath节点中DLL路径更换为对应的64位版本

<Reference Condition=" '$(Platform)' == 'x64' ……

 方法3:ItemGroup节点增加Condition条件 ,其实现同方法2,只是使用的节点不同。这里略过。

Visual Studio 中创建项目引用 DLL 中的函数,需要进行以下几个步骤: 1. **新建项目**: - 打开 Visual Studio,选择“创建新项目”。 - 选择适当的项目模板,如 Windows 应用程序(Win32 控制台应用),者其他适合你的需求的模板。 2. **添加引用**: - 在项目解决方案资源管理器中,右键点击你的项目,然后选择“属性”。 - 转到“链接器” -> “输入”,在“附加依赖项”下添加 DLL 文件的路径及其名称(包括扩展名)。如果 DLL项目目录内,可以直接引用名字;如果在其他地方,则需要提供完整的路径。 3. **声明函数**: - 因为 DLL 中的函数默认是不可见的,所以需要在项目的头文件 (.h) 中声明它们。使用 `extern "C"` 声明函数原型,如果 DLL 函数是 C 风格的: ```cpp extern "C" __declspec(dllexport) void FunctionName(void); ``` 如果函数是 C++ 标准命名,使用 `extern "CXX"` 直接使用函数名字。 4. **编译设置**: - 在项目属性里,在“C/C++”选项卡下的“预处理器”->“预定义宏”添加 `__declspec(dllimport)`(如果你的函数是从其他 DLL 引入的) `__declspec(dllexport)`(如果你的函数是导出给其他 DLL 使用)。 - 确保链接器(Linker)设置正确,如果是静态导入库,选择“动态链接”;如果是动态链接库,确保选择正确的运行库类型(如 Multi-threaded Debug DLL / Multi-threaded Release DLL 等)。 5. **编译并测试**: - 点击“构建”按钮者按 F7 进行编译。如果没有错误,应该可以在生成的目标目录找到可执行文件,并能调用 DLL 中的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

概念西瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值