Я желаю для разработки определенных проектов, но большую часть времени я испытываю недостаток в мотивации, потому что я разрабатываю один.
То, что я обычно делаю, ищут подобные существующие проекты и спрашивают разработчиков, если им нравится сотрудничать, но это довольно твердо.
Существует ли хорошее место (веб-сайт, возможно) для нахождения людей, которые интересуются тем же проектом как я и поэтому хотели бы сотрудничать?
Вам не нужно использовать Marshal.GetFuncterPointerForDelegate (), маршаллер P/Invoke делает это автоматически. Необходимо объявить делегата на стороне C #, подпись которого совместима с объявлением указателя функции на стороне C++. Например:
using System;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
class UnManagedInterop {
private delegate int Callback(string text);
private Callback mInstance; // Ensure it doesn't get garbage collected
public UnManagedInterop() {
mInstance = new Callback(Handler);
SetCallback(mInstance);
}
public void Test() {
TestCallback();
}
private int Handler(string text) {
// Do something...
Console.WriteLine(text);
return 42;
}
[DllImport("cpptemp1.dll")]
private static extern void SetCallback(Callback fn);
[DllImport("cpptemp1.dll")]
private static extern void TestCallback();
}
И соответствующий код C++, используемый для создания неуправляемой DLL:
#include "stdafx.h"
typedef int (__stdcall * Callback)(const char* text);
Callback Handler = 0;
extern "C" __declspec(dllexport)
void __stdcall SetCallback(Callback handler) {
Handler = handler;
}
extern "C" __declspec(dllexport)
void __stdcall TestCallback() {
int retval = Handler("hello world");
}
Для начала работы достаточно. Есть миллион деталей, которые могут доставить вам неприятности, вы должны столкнуться с некоторыми из них. Гораздо более продуктивным способом получения такого кода является написание обертки на языке C + +/CLI. Это также позволяет переносить класс C++, что невозможно сделать с P/Invoke. Достойный учебник доступен здесь.
-121--1557843-DLL, возможно, только ресурсы? Они используются, например, довольно часто в целях локализации.
EDIT: также возможно иметь DLL с кодом, который делает что-то в Dll Main (), чтобы каким-то образом сделать его функциональность доступной. DLL может зарегистрироваться у какого-то глобального диспетчера, например, или создать именованные объекты ядра...
-121--4378794-Вы сами кодируете?
Выпустите код на одном из литейных заводов с открытым исходным кодом. (code.google.com. sf.net. bitbucket.org, github.com и т.д.)
Выберите простую лицензию (x11/MIT хорошая, GPL2/3/AGPL3 если вам нравится, среди прочих.)
Напишите простые инструкции по развертыванию, запуску с одностраничным учебным пособием.
У вас есть сайт, где вы пишете о том, что вы создаете, и о том, что вы хотели бы построить.
Найдите людей, которым нужна помощь, и помогите им. Не растягивай себя.
Для создания доверия требуется время. Доверие требует времени.
Вы написали:
Я обычно ищу похожие существующие проекты и спрашиваю разработчиков, хотят ли они сотрудничать, но это довольно сложно.
Если вы видите проект с открытым исходным кодом, скорее всего, разработчики уже любят сотрудничать. Что они могут не захотеть делать, так это говорить о грандиозных схемах о том, как превратить программное обеспечение в следующего пятьдесят миллиардов долларов бегемота. Как правило, если вы присоединяетесь к списку рассылки, представьтесь («Привет, я Джо, и я люблю делать X, и мне нравится это программное обеспечение»)., получить и использовать программное обеспечение, и предоставить обратную связь и конструктивную критику, и продемонстрировать, что вы выполняете инструкции или, по крайней мере, пытаетесь, а затем, если вы предоставляете патч (или ветвь, если гитуб) она может быть рассмотрена и рассмотрена.
Соблюдайте методологию проекта. Например, если они используют тесты, отправьте тесты с вашим патчем.
Я попробовал себя, чтобы начать проект с открытым исходным кодом и не удался. Я опубликовал свою идею на форуме, и было около 10 или 15 человек, которые хотели присоединиться к проекту. На самом деле было очень мало активности ...
Я думаю, что главная причина неудачи состояла в том, что я ничего не развил перед публикой. Было бы действительно полезно иметь хотя бы прототип. Другое дело определяет (простой) процесс разработки.
Если бы я попробую это снова, я бы:
Проверьте предложения на GitHub.com. Если вы можете использовать Git, я часто нахожу несколько классных проектов, и вы всегда можете вилить репозиторий, чтобы помочь.
Во-первых, вы должны зарегистрировать свой проект на открытом исходном коре. В Википедии есть список сравнения: http://en.wikipedia.org/wiki/comparison_of_open_source_software_hosting_source_software_hosting_facilities
На определенных футах есть способ задать помощь. Я знаю, что SourceForge делает: https://sourceforge.net/people/
Я рекомендую, чтобы вы прочитали отличную и полную книгу Карла Фогеля по теме: создание программного обеспечения с открытым исходным кодом . Он свободно доступен онлайн или в печати с Amazon.