Тема: C#
Показать сообщение отдельно
Старый 01.04.2013, 00:04   #115
От заката до рассвета
 
Аватар для $finX
 
Регистрация: 10.06.2009
Адрес: Тюмень
Сообщений: 120
Репутация: 50 [+/-]
немного ненужной истории.

пишу я на CUDA. и хочу я писать на C#. и думаю - а не сделать ли мне библиотечку? нехай кудовский код будет на крестах, а нормальные удобные вещи я буду писать на шарпе. и начался гугл, и было его тысячи, и через многие сотни времени у меня всё ж таки была dll с кодом на CUDA. и работала она. вот только к шарпу не подключалась.

файлик Hello.cu сиречь cpp
Скрытый текст:
#include "Hello.h"

__global__ void MyCUDA(int a, int b, int *c)
{
*c = a + b;
}

namespace nmspace
{
extern "C" _declspec(dllexport) int myclass::Summ(int a, int b)
{
int c;
int *dev_c;
cudaMalloc((void**)&dev_c,sizeof(int));

cudaMemcpy(dev_c, &c, sizeof(int), cudaMemcpyHostToDevice);

MyCUDA<<<1, 1>>>(a, b, dev_c);

cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
cudaFree(dev_c);
return c;
}
}


файлик Hello.h
Скрытый текст:
namespace nmspace
{
class myclass
{
public:
static __declspec(dllexport) int Summ (int a, int b);
};
}


код шарпа
Скрытый текст:
using System.Runtime.InteropServices;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
[DllImport(@"P:\study\course work 2013\asonsite\HelloWorld\Debug\HelloWorldCuda.dll" , CallingConvention = CallingConvention.Cdecl)]
public static extern int Summ(int a, int b);

public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(Summ(13, 37).ToString());
}
}
}


и при тыке на кнопку он выдаёт вот такую ошибку:
Цитата:
Unable to find an entry point named 'Summ' in DLL 'P:\study\course work 2013\asonsite\HelloWorld\Debug\HelloWorldCuda.dll' .
что же мне делать? я что-то читал про то, какие некошерные имена функций получаются в dll, которые лишь отдалённо похожи на оригинальные, и что нучжо что-то сделать, чтоб имена получались хорошими, годными. это так?
__________________
— Я пью горячий шоколад только в месяцах, где присутствует буква Р.
— Почему?
— Ну. Жизнь без капризов — это не жизнь.

— Все становится лучше, когда есть Bluetooth.

— В этом мире полно бездомных, грязных носков.
— В моем мире нет. (с) ТБВ
$finX вне форума  
Ответить с цитированием