I recently met with a curious problem when using C++ Dll when using C# application
"System.BadImageFormatException: 'An attempt was made to load a program with an incorrect format. (0x8007000B)'"
I searched around the web and found solutions like making Конечно < /p>
DLL создан как та же самая конфигурация (т.е. x86 или x64) < /li>
Убедившись, что функции C ++, которые вы называете, не имеют проблемы < /li>
< /ol>
Для решения 1, у меня есть другие функции в DLL, что нет. Для Soln 2 я попытался создать его как пустую функцию C ++ в DLL, комментируя исходные коды. Тем не менее, проблема сохраняется. Нужна кто -то добрый помощь, чтобы указать на проблему или предоставить некоторые идеи для устранения неполадок < /p>
Вот мой C ++ DLL. Файл заголовка < /p>
#pragma once
#ifndef _UTIL_DLL_H
#define _UTIL_DLL_H
#include
#include
#include
#include
#include
#include
#include
#include "boost/iostreams/device/mapped_file.hpp"
#include
#include
#include
#include
#include
#include
// Warn about use of deprecated functions.
#define GNUPLOT_DEPRECATE_WARN
#include "gnuplot-iostream.h"
#include "../../../../OneDrive/Documents/GitHub/gnuplot-iostream/gnuplot-iostream.h"
#define EXPORT_API __declspec(dllexport)
extern "C" {
//EXPORT_API void plot(const char* file, int xIdx, int yIdx);
EXPORT_API int add(int a, int b);
EXPORT_API void SayHello();
EXPORT_API void plot();
}
#endif
< /code>
c ++ cpp < /p>
// Util.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include "Util.h"
extern "C" {
EXPORT_API int add(int a, int b)
{
return a + b;
}
EXPORT_API void SayHello() {
std::cout
using CsvHelper;
using CsvHelper.Configuration;
using System;
using System.Diagnostics;
using System.Formats.Asn1;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using static System.Net.Mime.MediaTypeNames;
namespace WpfTutorialSamples.XAML
{
public partial class EventsSample : Window
{
private const string dllpath = @"C:\Users\water\source\repos\WPF\x64\Debug\Util.dll";
[DllImport(dllpath, CallingConvention = CallingConvention.Cdecl)]
public static extern int add(int a, int b);
public static extern void plot();
// this is ok
private void Button_Hello(object sender, RoutedEventArgs e)
{
uiTextBox1.Text = add(1, 2).ToString();
}
// this gives the above problem
private void Button_Plot(object sender, RoutedEventArgs e)
{
plot();
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... pplication
Проблемы с использованием C ++ DLL при запуске приложения C# UI ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1756979631
Anonymous
I recently met with a curious problem when using C++ Dll when using C# application
"System.BadImageFormatException: 'An attempt was made to load a program with an incorrect format. (0x8007000B)'"
I searched around the web and found solutions like making Конечно < /p>
DLL создан как та же самая конфигурация (т.е. x86 или x64) < /li>
Убедившись, что функции C ++, которые вы называете, не имеют проблемы < /li>
< /ol>
Для решения 1, у меня есть другие функции в DLL, что нет. Для Soln 2 я попытался создать его как пустую функцию C ++ в DLL, комментируя исходные коды. Тем не менее, проблема сохраняется. Нужна кто -то добрый помощь, чтобы указать на проблему или предоставить некоторые идеи для устранения неполадок < /p>
Вот мой C ++ DLL. Файл заголовка < /p>
#pragma once
#ifndef _UTIL_DLL_H
#define _UTIL_DLL_H
#include
#include
#include
#include
#include
#include
#include
#include "boost/iostreams/device/mapped_file.hpp"
#include
#include
#include
#include
#include
#include
// Warn about use of deprecated functions.
#define GNUPLOT_DEPRECATE_WARN
#include "gnuplot-iostream.h"
#include "../../../../OneDrive/Documents/GitHub/gnuplot-iostream/gnuplot-iostream.h"
#define EXPORT_API __declspec(dllexport)
extern "C" {
//EXPORT_API void plot(const char* file, int xIdx, int yIdx);
EXPORT_API int add(int a, int b);
EXPORT_API void SayHello();
EXPORT_API void plot();
}
#endif
< /code>
c ++ cpp < /p>
// Util.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include "Util.h"
extern "C" {
EXPORT_API int add(int a, int b)
{
return a + b;
}
EXPORT_API void SayHello() {
std::cout
using CsvHelper;
using CsvHelper.Configuration;
using System;
using System.Diagnostics;
using System.Formats.Asn1;
using System.Globalization;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using static System.Net.Mime.MediaTypeNames;
namespace WpfTutorialSamples.XAML
{
public partial class EventsSample : Window
{
private const string dllpath = @"C:\Users\water\source\repos\WPF\x64\Debug\Util.dll";
[DllImport(dllpath, CallingConvention = CallingConvention.Cdecl)]
public static extern int add(int a, int b);
public static extern void plot();
// this is ok
private void Button_Hello(object sender, RoutedEventArgs e)
{
uiTextBox1.Text = add(1, 2).ToString();
}
// this gives the above problem
private void Button_Plot(object sender, RoutedEventArgs e)
{
plot();
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79755493/problems-using-c-dll-when-running-c-sharp-ui-application[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия