Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: гдето косяк в длл Добавлено: 20.11.06 13:08  

Автор вопроса:  Skywalker | Web-сайт: iSkywalker.ru | ICQ: 300-70-6пятьЪ 
чтото я не нзаю что да как делать. пытаюсь создать длл, вот код:

Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class Class1
    Public Shared device As Device = Nothing
    Public Shared Function InitializeGraphics(ByVal frm As System.Windows.Forms.Form) As Boolean
        Try
            Dim presentParams As New PresentParameters
            presentParams.Windowed = True
            presentParams.SwapEffect = SwapEffect.Discard
            device = New Device(0, DeviceType.Hardware, frm, _
                CreateFlags.SoftwareVertexProcessing, presentParams)
            Return True
        Catch e As DirectXException
            Return False
        End Try
    End Function
    Public Shared Sub Render()
        If device Is Nothing Then
            Return
        End If
        device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
        device.BeginScene()
        device.EndScene()
        device.Present()
    End Sub
End Class


вот далее в проекте самом подключаю ее пишу

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim engine As New sky_engine.Class1
        If Not (engine.InitializeGraphics(Me)) Then
            MsgBox("error")
        End If
        While Me.Created
            engine.Render()
            System.Windows.Forms.Application.DoEvents()
        End While
    End Sub
End Class


во первых возникает вопрос как сделать чтоб было не sky_engine.class1 а Как во всех норм длл просто as new sky_engine

во вторых он на это ругаеца и предлагает заменить engine на sky_engine.class1
если заменить, то выдает такую ошибку:
DLL 'C:\WINDOWS\assembly\GAC\Microsoft.DirectX.Direct3D\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.Direct3D.dll' is attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.


подскажите что я не так делаю?

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #1 Добавлено: 20.11.06 15:01
А зачем ты пишешь класс, если объявляешь внутренние данные и явно инстансовые методы как shared?..

Ответить

Номер ответа: 2
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #2
Добавлено: 20.11.06 15:41
Я откуда знаю что я делаю, напиши как надо?))

Ответить

Номер ответа: 3
Автор ответа:
 Viper



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #3 Добавлено: 21.11.06 11:15
Ндя... тот еще вопросик... ну если автор не знает что делать, то остальным даже и телепатия не поможет

Ответить

Номер ответа: 4
Автор ответа:
 danser



ICQ: 299287824 

Вопросов: 76
Ответов: 209
 Профиль | | #4 Добавлено: 21.11.06 14:36
Я откуда знаю что я делаю, напиши как надо?))


The Best :)
Лучшее что встречал на подобных форумах.

Ответить

Номер ответа: 5
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #5
Добавлено: 21.11.06 22:53
мда, ну я знаю что тупо звучит, но че тут не ясного, я просто ни разу не писал еще библиотеку и хз нада там классы ненада. по сорцам все видно что я хочу сделать.

Ответить

Номер ответа: 6
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #6 Добавлено: 21.11.06 23:34
Тебе бы, для начала, про модификаторы доступа что-нибудь почитать.. а потом уже за либы браться.. (имхо)

Ответить

Номер ответа: 7
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #7
Добавлено: 22.11.06 17:09
Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.

Это значит, что в DllMain нельзя помещать managed code, т.к. это может привести к тому, что dll не будет загружаться

Ответить

Номер ответа: 8
Автор ответа:
 Skywalker



ICQ: 300-70-6пятьЪ 

Вопросов: 62
Ответов: 545
 Web-сайт: iSkywalker.ru
 Профиль | | #8
Добавлено: 30.11.06 21:07
ну помогите пожалуйста просто я почему-то не знаю что нужно сделать...
вот код:

Imports Microsoft.DirectX
Imports Microsoft.DirectX.Direct3D
Public Class Form1
    Private device As Device = Nothing
    Public Function InitializeGraphics() As Boolean
        Try
            Dim presentParams As New PresentParameters
            presentParams.Windowed = True
            presentParams.SwapEffect = SwapEffect.Discard
            device = New Device(0, DeviceType.Hardware, Me, _
                CreateFlags.SoftwareVertexProcessing, presentParams)
            Return True
        Catch e As DirectXException
            Return False
        End Try
    End Function
    Shared Sub Main()
        Dim frm As New Form1()
        If Not frm.InitializeGraphics() Then
            MessageBox.Show(";Direct3D не инициализируется.";)
            Return
        End If
        frm.Show()
        While frm.Created
            frm.Render()
            Application.DoEvents()
        End While
    End Sub
    Private Sub Render()
        If device Is Nothing Then
            Return
        End If
        device.Clear(ClearFlags.Target, System.Drawing.Color.Blue, 1.0F, 0)
        device.BeginScene()
        device.EndScene()
        device.Present()
    End Sub
End Class


как разделить его на длл и основной проект, чтоб в проекте например написать

dim eng as new engine

Ну а дальше я не знаю или нужно создавать форму в проекте и посылать ее аргументом в длл или чтоб она прям в длл создавалась... В общем основная проблема, что я не пойму как разделить это на длл и основной проект. Помогите.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам