Не удалось запустить примеры SWIG C # в VS 2010 - PullRequest
3 голосов
/ 20 июля 2011

Я пытаюсь заставить SWIG работать с Visual Studio и C #.

Я скачал swigwin-2.0.4.zip и преобразовал проект в проект VS 2010.

Я могу построить пример «класса». Когда я пытаюсь запустить скомпилированную сборку, я получаю сообщение об ошибке

    The type initializer for 'examplePINVOKE' threw an exception.

Я погуглил ошибку, но не нашел предложений по ее устранению.

Надеюсь, кто-нибудь сможет помочь!

Спасибо

Christian

Ответы [ 3 ]

3 голосов
/ 08 мая 2012

Для меня работало:

  1. Перейдите в Build-> Configuration Manager.Для проекта C # измените AnyCpu на x86 и перестройте.
  2. Скопируйте example.dll на bin \ x86 \ Debug (Release).

Не требует CorFlags.

1 голос
/ 21 июля 2011

Решение для меня было

  • Перемещение используемых DLL в каталог Release (или Debug)
  • Выполнить CorFlags / 32Bit + file.exe

, где file.exe - исполняемый файл, созданный при сборке кода.

Для получения дополнительной информации о том, что происходит, полезны следующие ссылки

http://www.davesquared.net/2008/12/systembadimageformatexception-on-64-bit.html

http://blogs.msdn.com/b/joshwil/archive/2005/05/06/415191.aspx

1 голос
/ 21 июля 2011

Я получил следующий ответ от Грегори Броннера в списке рассылки swig-user:

    I had this issue as well (VS2010 , Windows 7, 64 bit computer, 32 bit mode dll, .NET 4) :

    The problem actually relates to being unable to load the DLLs

    There were two causes:

    #1:  All DLLs used by the C# assembly need to be in the same directory (or you need to change the lookup paths).


    #2: The C# or the C++ DLL (I forget which) had incorrect CofFlags -- use CorFlags  /32Bit+ *.dll or something like that.  You could also try using /UpgradeCLRHeader


    #3: You need to target the .NET 4.0 system in the project file, but 1 and 2 should get you started.

Я попробую эти подсказки и посмотрю, работают ли они, а затем отправлю ответ, если смогу разрешитьвыпуск.

...