这一行:
Boolean bl = InitializeDirectX(mypb);
使用DirectX的InitializeDirectX方法:
public Boolean InitializeDirectX(PictureBox pb)
{
DispMode = Manager.Adapters[Manager.Adapters.Default.Adapter].CurrentDisplayMode;
D3Dpp = new PresentParameters();
D3Dpp.BackBufferFormat = DispMode.Format;
D3Dpp.PresentFlag = PresentFlag.LockableBackBuffer;
D3Dpp.SwapEffect = SwapEffect.Discard;
D3Dpp.PresentationInterval = PresentInterval.One; //wait for vertical sync. Synchronizes the painting with
//monitor refresh rate for smoooth animation
D3Dpp.Windowed = true; //the application has borders
try
{
D3Ddev = new Device(Manager.Adapters.Default.Adapter, DeviceType.Hardware, pb.Handle,
CreateFlags.SoftwareVertexProcessing, D3Dpp);
D3Ddev.VertexFormat = CustomVertex.PositionColored.Format;
D3Ddev.RenderState.Lighting = false;
D3Ddev.RenderState.CullMode = Cull.CounterClockwise;
backTexture = TextureLoader.FromStream(D3Ddev, mymem);
scannedCloudsTexture = new Texture(D3Ddev, 512, 512, 1, Usage.Dynamic, Format.A8R8G8B8, Pool.Default);
//sprite is used to draw the texture
D3Dsprite = new Sprite(D3Ddev);
return true;
}
catch
{
return false;
}
}
抛出异常:
Boolean bl = InitializeDirectX(mypb);
异常是FileNotFoundException:
A first chance exception of type 'System.IO.FileNotFoundException' occurred in My Weather Station.exe
Additional information: Could not load file or assembly 'Microsoft.DirectX.Direct3DX.dll' or one of its dependencies. The specified module could not be found.
文件Microsoft.DirectX.Direct3DX.dll确实存在于我在参考文件中看到的目录中。我也没有在这个dll的引用中看到任何黄色或文件丢失的状态。
之前我没有例外,就像在dll文件中发生了某些变化一样?
System.IO.FileNotFoundException occurred
_HResult=-2147024770
_message=Could not load file or assembly 'Microsoft.DirectX.Direct3DX.dll' or one of its dependencies. The specified module could not be found.
HResult=-2147024770
IsTransient=false
Message=Could not load file or assembly 'Microsoft.DirectX.Direct3DX.dll' or one of its dependencies. The specified module could not be found.
Source=My Weather Station
FileName=Microsoft.DirectX.Direct3DX.dll
FusionLog=""
StackTrace:
at mws.ScanningClouds.InitializeDirectX(PictureBox pb)
at mws.ScanningClouds.ScanClouds_Load(Object sender, EventArgs e) in d:\C-Sharp\myprog.cs:line 179
InnerException:
第179行是:
Boolean bl = InitializeDirectX(mypb);
如果dll中的某些依赖项缺失不确定原因,我怎么能找到哪些依赖项?如果有的话?
UDATE:
这是文件DirectXDirect3DX.dll
的dotPeek中的引用在我的项目中:
我不理解T.S解决方案中的记事本部分。
更新
这是我的项目文件中的引用:
<Reference Include="AviFile">
<HintPath>C:\Temp\avifilewrapper\aviFileWrapperDemo_src\AviDemo\bin\Debug\AviFile.dll</HintPath>
</Reference>
<Reference Include="Microsoft.DirectX, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Temp\radarscan\dlls\DLL'S\Microsoft.DirectX.DLL</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.DirectX.Direct3D, Version=1.0.2902.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Temp\radarscan\dlls\DLL'S\Microsoft.DirectX.Direct3D.DLL</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Microsoft.DirectX.Direct3DX, Version=1.0.2909.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<SpecificVersion>False</SpecificVersion>
<HintPath>C:\Temp\radarscan\dlls\DLL'S\Microsoft.DirectX.Direct3DX.DLL</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NumericComparer">
<HintPath>C:\Temp\csnsort\csnsort_src\NumericComparer.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Speech" />
<Reference Include="System.Web" />
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Deployment" />
<Reference Include="System.Drawing" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
<Reference Include="unfreez_wrapper, Version=1.0.4362.38939, Culture=neutral, processorArchitecture=x86">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\..\..\New folder\Unfreez\unfreez_wrapper\Release\unfreez_wrapper.dll</HintPath>
</Reference>
<Reference Include="ZedGraph">
<HintPath>..\..\..\..\Appz\zedgraph_dll_v515_1\zedgraph_dll_v515\zedgraph_dll_v5.1.5\ZedGraph.dll</HintPath>
</Reference>
<Reference Include="ZedGraph.Web">
答案 0 :(得分:0)
您的计算机上可能未安装Directx
的组件或部分。在您的计算机上安装DirectX
可以解决问题。